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
}