我想使用带有加载器< cursor> 的greenDao来从数据库异步加载我的数据。我找到了使用带有contentProvider的loader的示例。我知道加载器是从数据库加载数据的最佳方式,因为它处理光标的生命周期,当我们添加一个值时自动更新光标..不幸的是没有带绿色驱动器的加载器的例子,是否可能或我有使用contentProvider ??
THX
答案 0 :(得分:1)
我遇到了这个问题,因为我也有同样的问题,但我有一个想法,但从未尝试过,但你可以更快,更好地执行它。我认为eventbus(https://github.com/greenrobot/EventBus)可以是一个解决方案,只要本地数据库发生变化(添加,删除,更新),您就可以通知事件,并且在您的活动中,您应该有一个将触发的事件监听器收到事件后重新加载内容(重新查询)。
答案 1 :(得分:0)
GreenDao允许您run queries and return strongly typed objects,因此不需要加载器,您只需将其包装在ASyncTask中即可。 e.g:
DaoSession session = DbHelper.getInstance().getDaoSession();
final SpeakerDao speaker = session.getSpeakerDao();
new AsyncTask<Void, Void, Speaker>() {
@Override
protected Speaker doInBackground(Void... params) {
return speaker.queryBuilder().list().get(0);
}
@Override
protected void onPostExecute(Speaker result) {
// do stuff with speaker
}
}.execute();