使用基于时间的查询更新了RealmResults

时间:2016-09-05 09:54:20

标签: android android-fragments realm

我开始接近这个奇妙的王国世界。我对我得到的结果感到非常高兴,现在我有一个问题要提交。

在我的Android应用程序中,我有一个片段显示从Realm检索的数据。查询条件是此数据引用的时间介于今天的开始和结束之间。

RealmResults<Appointment> results = realm
    .where(MyObject.class)
    .between("begin", rangeBegin, rangeEnd)
    .between("end", rangeBegin, rangeEnd)
    .findAllSorted("begin", Sort.ASCENDING);

此查询在onStart()方法中执行,帮助我利用实时更新功能,这确实非常有效。 我还添加了更改的侦听器,以优化UI更新。

现在的问题是:如果时间条件发生变化,这个实时更新会如何表现? (想象一下,我保持应用程序打开超过一天而不接触它,或者只是让应用程序在午夜左右打开几分钟)

从我所看到的,它似乎在第一次onStart()执行时完成了相同的查询。

有没有方法可以进行实时更新查询,还是应该在onStart()之外的其他地方重新运行该查询?

提前谢谢

1 个答案:

答案 0 :(得分:2)

  

现在的问题是:如果时间条件发生变化,这个实时更新会如何表现? (想象一下,我保持应用程序打开超过一天而不接触它,或者只是让应用程序在午夜左右打开几分钟)

设置完成后,查询非常不变,因此您需要使用rangeStartrangeEnd的不同参数执行新查询,并替换其他结果。

  

此查询在onStart()方法中执行,帮助我利用实时更新功能,这确实非常有效。我还添加了更改的侦听器,以优化UI更新。

我个人建议将查询放在onCreateView()中,将Realm生命周期管理放到onCreateView()onDestroyView()

此外,如果使用RealmRecyclerViewAdapter(适配器1.3.0适用于领域1.2.0),则可以避免手动分配RealmChangeListeners以显示列表。

如果您使用RealmRecyclerViewAdapter,则只需致电adapter.updateData(newResults);,它就会根据需要更新视图。