私はsqlbrite、rxjavaの使用を初めています。だから、UIスレッドでコードを実行する必要があります(具体的には、更新されたdb SELECTクエリから取得したcoursorのマップ上にマーカーを追加する必要があります)。ここで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が返す)からinteropライブラリで観測可能なRxJava2に行くことができます:https://github.com/akarnokd/RxJava2Interop – Anstrong