我开始接近这个奇妙的王国世界。我对我得到的结果感到非常高兴,现在我有一个问题要提交。
在我的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()之外的其他地方重新运行该查询?
提前谢谢
答案 0 :(得分:2)
现在的问题是:如果时间条件发生变化,这个实时更新会如何表现? (想象一下,我保持应用程序打开超过一天而不接触它,或者只是让应用程序在午夜左右打开几分钟)
设置完成后,查询非常不变,因此您需要使用rangeStart
和rangeEnd
的不同参数执行新查询,并替换其他结果。
此查询在onStart()方法中执行,帮助我利用实时更新功能,这确实非常有效。我还添加了更改的侦听器,以优化UI更新。
我个人建议将查询放在onCreateView()
中,将Realm生命周期管理放到onCreateView()
和onDestroyView()
。
此外,如果使用RealmRecyclerViewAdapter(适配器1.3.0适用于领域1.2.0),则可以避免手动分配RealmChangeListeners以显示列表。
如果您使用RealmRecyclerViewAdapter
,则只需致电adapter.updateData(newResults);
,它就会根据需要更新视图。