Android:如何使用greenDao进行异步加载数据?

时间:2014-02-07 15:08:44

标签: android greendao

我想使用带有加载器< cursor> 的greenDao来从数据库异步加载我的数据。我找到了使用带有contentProvider的loader的示例。我知道加载器是从数据库加载数据的最佳方式,因为它处理光标的生命周期,当我们添加一个值时自动更新光标..不幸的是没有带绿色驱动器的加载器的例子,是否可能或我有使用contentProvider ??

THX

2 个答案:

答案 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();