2018-02-23

创建异步查询

RealmResultsresult=realm.where(User.class).equalTo("name","John").or().equalTo("name","Peter").findAllAsync();

请注意,这里的调用并不会阻塞,而是立即返回一个 RealmResults。这很类似于标准 Java 中 Future的概念。查询将会在后台线程中被执行,当其完成时,之前返回的 RealmResults 实例会被更新。

如果你希望当查询完成、RealmResults 被更新时获得通知,你可以注册一个 RealmChangeListener。这个监听器会在 RealmResults 被更新时被调用(通常是在事务被提交后)。

注册回调

privateRealmChangeListener callback=newRealmChangeListener>(){@OverridepublicvoidonChange(RealmResultsresults){

// called once the query complete and on every update

}

};

public void onStart(){

RealmResultsresult=realm.where(User.class).findAllAsync();

result.addChangeListener(callback);

}

请在退出 Activity 或者 Fragment 时移除监听器的注册以避免内存泄漏。

public void onStop(){

result.removeChangeListener(callback);// remove a particular listener// orresult.removeChangeListeners();// remove all registered listeners

}

你可能感兴趣的:(2018-02-23)