我真的有兴趣在我的应用程序中应用许多最佳实践。 现在,我正在开发一个从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仍然在主线程中运行,而不是在后台运行。 如果是这样,我如何在后台线程中获取光标。 谢谢。
答案 0 :(得分:4)
答案 1 :(得分:0)
房间确实是一个不错的选择。