Android管理SQLite操作的最佳方式

时间:2017-11-02 09:47:36

标签: android multithreading sqlite android-asynctask

我有一个本地SQLLite数据库。我阅读了很多内容/堆栈帖子,但我没有成功理解管理SQL查询的最佳方法。

确实,我不想在UIThread中进行CRUD操作。所以为了避免它,并在另一个线程中管理查询,我为此创建了一个asynctask因为我可以做很多查询,这可能需要一些时间。但我不确定这是最好的方法。 Asynctask它通常在我们希望与UI线程建立链接时使用(对于"更新" /"插入"查询,我不想做UIthread中的某些东西,只有当我从DB中检索数据时),我不确定它在性能方面是最好的组件,因为所有的asynctasks都在一个线程上顺序运行。 (我知道有一种方法可以并行执行这些,但不好的执行)

我看到许多Android组件都是AsyncQueryLoader,LoaderManager等,但所有这些概念似乎都链接到contentprovider / contentresult。我只有一个sqlite数据库。

那么在另一个线程中管理所有CRUD操作的最佳方法是什么? HandlerThread也许?

2 个答案:

答案 0 :(得分:-1)

您可以使用RxJava Observable例如:

 @Override
public Observable<List<Model>> getModels() {
    return Observable.create(new Observable.OnSubscribe<List<Model>>() {
        @Override
        public void call(Subscriber<? super List<Model>> subscriber) {
            try {
               // select from db and return list
                subscriber.onNext(//your list);
                subscriber.onCompleted();
            } catch (Exception e) {
                subscriber.onError(new RepositoryException(e));
            }
        }
    });
}

然后

return getModels().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread());

答案 1 :(得分:-1)

我建议您使用OMR库,它提供了非常简单的方法来管理SQLite操作。Reference