Я начинаю использовать sqlbrite, rxjava. Итак, я должен запустить некоторый код в потоке пользовательского интерфейса (для конкретного добавить некоторые маркеры на карте из курсора, который у меня есть из обновленного запроса SELECT SELECT).SqlBrite не может использовать AndroidSchedulers.mainThread()
Вот моя начальная установка:
sqlBrite = new SqlBrite.Builder().build();
resolver = sqlBrite.wrapContentProvider(mContentResolver, Schedulers.io());
Observable<SqlBrite.Query> query = resolver.createQuery(SmogContract.MeasurementEntry.CONTENT_URI, null, null, null, null, true);
Однако, когда я хочу сделать это:
query.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<SqlBrite.Query>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(SqlBrite.Query query) {
////add marker on a map from updated cursor select for latlng which I have in db
/// db is updated in some intervals from API
}
});
Это дает мне ошибку с методом AndroidSchedulers.mainThread:
observeOn (Rx.Scheduler) in Observable cannot be applied to io.reactivex.Scheduler
В моей градации у меня это в связи с sqlbrite, rxjava:
compile 'com.squareup.sqlbrite:sqlbrite:1.1.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
И retrolambda. Как правильно настроить его? Без rxandroid и rxjava я не могу использовать AndroidSchedulers.mainThread().
добавить на к этому вы можете перейти от наблюдаемого RxJava1 (который возвращает SQLBrite) к RxJava2, наблюдаемому с помощью библиотеки interop: https://github.com/akarnokd/RxJava2Interop – Anstrong