什么是SQLite + RxJava的最佳实践?

时间:2016-10-06 11:28:22

标签: android sqlite rx-java mvp

我真的有兴趣在我的应用程序中应用许多最佳实践。 现在,我正在开发一个从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仍然在主线程中运行,而不是在后台运行。 如果是这样,我如何在后台线程中获取光标。 谢谢。

2 个答案:

答案 0 :(得分:4)

最好使用像SQLBriteStorIO这样的库,而不是实施自己的解决方案。

答案 1 :(得分:0)

房间确实是一个不错的选择。

Save data in a local database using Room