私は本当に自分のアプリケーションに多くのベストプラクティスを適用することに興味があります。 今、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を使用して、クエリのオブジェクトをカーソルの代わりにデータモデルとして返すことだと思います! –