Мне очень понравилось применять многие лучшие практики для моего приложения. Прямо сейчас, я разрабатываю приложение, которое извлекает элемент из SQLite. Я пытаюсь использовать RxJava, но я не уверен, что я делаю это правильно.Какова наилучшая практика SQLite + RxJava?
Это мой код для создания наблюдаемого: DataManager.java
public Observable<Cursor> fetchData(String a, String b) {
String query = "select * from " + TABLE_TEST +
" where ... + a && b ";
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
return Observable.just(c);
}
и это функция, которая выше называют кодом: PresenterDb.java
void fetchSchedulesDb(String channelReq, String dateReq){
unSubscribeAll();
subscribe(getCursor(channelReq, dateReq), PresenterDb.this);
}
и это функция подписки : BasePresenterDb.java
protected <R> void subscribe(Observable<R> observable, Observer<R> observer){
Subscription subscription = observable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.computation())
.subscribe(observer);
configureSubscription().add(subscription);
}
Класс PresenterDb.java реализует Observer, поэтому в этом классе есть onCompleted, onError и onNext.
Я сомневаюсь, что это не лучшая практика, потому что я думаю, что getCursor все еще работает в основном потоке, а не в фоновом режиме. Если да, то как я могу получить курсор в фоновом потоке. Спасибо.
Я думаю, что лучшая практика использует Observable для возврата объектов вашего запроса в качестве модели данных вместо курсора! –