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

5
我想使用greenDao和来异步从数据库中加载数据。我发现了使用contentProvider的示例。我知道使用loader是从数据库加载数据的最佳方式,因为它处理游标的生命周期,在添加值时自动更新游标。不幸的是没有使用greenDao的loader示例,这是可能的吗?还是我必须使用contentProvider?谢谢。

那你试过了吗?我也有同样的想法,但不确定。 - demaksee
2个回答

1

我遇到了这个问题,因为我也有同样的问题,但我有一个想法,但还没有尝试过,但你可能可以比我更快更好地执行它。我认为eventbus(https://github.com/greenrobot/EventBus)可以是一个解决方案,每当本地数据库发生变化(添加、删除、更新),您可以通知一个事件,在您的活动中,您应该有一个事件监听器,接收到事件后会触发内容重新加载(重新查询)。


0
GreenDao允许您运行查询并返回强类型对象,因此不需要加载器,您可以简单地将其包装在ASyncTask中。例如:
    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();

通过使用加载器,您可以自动收到内容更改的通知。在这个例子中,如果不使用加载器,您是不是需要定期查询才能实现与加载器相同的结果? - Tyler Pfaff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接