我有一个本地SQLLite数据库。我阅读了很多内容/堆栈帖子,但我没有成功理解管理SQL查询的最佳方法。
确实,我不想在UIThread中进行CRUD操作。所以为了避免它,并在另一个线程中管理查询,我为此创建了一个asynctask因为我可以做很多查询,这可能需要一些时间。但我不确定这是最好的方法。 Asynctask它通常在我们希望与UI线程建立链接时使用(对于"更新" /"插入"查询,我不想做UIthread中的某些东西,只有当我从DB中检索数据时),我不确定它在性能方面是最好的组件,因为所有的asynctasks都在一个线程上顺序运行。 (我知道有一种方法可以并行执行这些,但不好的执行)
我看到许多Android组件都是AsyncQueryLoader,LoaderManager等,但所有这些概念似乎都链接到contentprovider / contentresult。我只有一个sqlite数据库。
那么在另一个线程中管理所有CRUD操作的最佳方法是什么? HandlerThread也许?
答案 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