异步查询

每个同步查询方法(例如 findAll()findAllSorted())都有一个异步对应方(findAllAsync() / findAllSortedAsync())。

异步查询将 RealmResults 的评估卸载到另一个线程。为了在当前线程上接收这些结果,当前线程必须是一个 looper 线程(读取:异步查询通常只能在 UI 线程上工作)。

RealmChangeListener<RealmResults<SomeObject>> realmChangeListener; // field variable

realmChangeListener = new RealmChangeListener<RealmResults<SomeObject>>() {
    @Override
    public void onChange(RealmResults<SomeObject> element) {
        // asyncResults are now loaded
        adapter.updateData(element);
    }
};

RealmResults<SomeObject> asyncResults = realm.where(SomeObject.class).findAllAsync();
asyncResults.addChangeListener(realmChangeListener);