我只是想知道是否有方法在Android上异步排序RealmList
。RealmList排序异步?
说我有叫diaryEntry
一种境界对象包含Entry
的RealmList
一个对象:
RealmList<Entry> entries;
public RealmList<Entry> getEntries() { return entries; }
如果我要排序的RealmList我简单地调用排序和多数民众赞成它,它工作正常。
RealmResults<Entry> sortedEntries = diaryEntry.getEntries().sort("time");
mvpView.bindAndShowEntryList(sortedEntries);
上面的代码然而在一个Fragment's onResumeFragment()
方法当片段变得可见,其被调用执行(it's我介绍了一个自定义的生命周期方法)在ViewPager。所以很显然,如果我可以在后台对数据进行排序,并且片段变得可见时,将结果绑定到视图上会很好。
于是我想出了下面的第二方案:
entries = realm.where(Entry.class)
.equalTo("dateId", dateId)
.findAllSortedAsync("time");
注:dateId
是一个整数,是在ViewPager
每一个Fragment
独特ID。 这样我不得不在Entry.class中添加一个新的索引整数字段dateId。
public class Entry extends RealmObject {
// Other fields ...
@Index
private int dateId;
我的问题:有没有办法异步排序RealmList
? 如果不是,哪种方法可能会更好?的第一个,其各种的UI线程上的条目,但有含有(以平均10-15 Entry对象)中的所有相应Entry
对象RealmList
的即时访问。 或者第二种方法,它必须首先找到所有对应的Entry
对象dateId
,但是所有这一切都是异步而不会阻塞UI线程?
注:在平均有每一个独特的dateId
约10-15 Entry
对象,因此,如果一个普通用户使用我的应用程序为2年,并增加了约15项,每天将有大约11000 Entry
对象数据库。这显然是一个相当高的假设,因为没有用户每天都会添加条目,甚至没有那么多。
'.findAllSortedAsync(“time”);'这是异步排序的。当初始异步评估完成时(以及将来的任何更改),将调用添加到其中的'RealmChangeListener'。 – EpicPandaForce
所以第二种方法会更好,即使首先需要为Entry对象查询数据库?但是我猜搜索速度非常快,而且是异步搜索(最少的搜索时间无关紧要),所以这是更好的方法,我明白了吗? – Elias
我知道这是脱离主题,但有没有一种方法来使用RealmRecyclerViewAdapter动画RecyclerView项目? – Elias