創(chuàng)建異步查詢
RealmResultsresult=realm.where(User.class).equalTo("name","John").or().equalTo("name","Peter").findAllAsync();
請(qǐng)注意,這里的調(diào)用并不會(huì)阻塞,而是立即返回一個(gè)?RealmResults。這很類似于標(biāo)準(zhǔn) Java 中?Future的概念。查詢將會(huì)在后臺(tái)線程中被執(zhí)行,當(dāng)其完成時(shí),之前返回的?RealmResults?實(shí)例會(huì)被更新。
如果你希望當(dāng)查詢完成、RealmResults?被更新時(shí)獲得通知,你可以注冊(cè)一個(gè)?RealmChangeListener。這個(gè)監(jiān)聽器會(huì)在?RealmResults?被更新時(shí)被調(diào)用(通常是在事務(wù)被提交后)。
注冊(cè)回調(diào)
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);
}
請(qǐng)?jiān)谕顺?Activity 或者 Fragment 時(shí)移除監(jiān)聽器的注冊(cè)以避免內(nèi)存泄漏。
public void onStop(){
result.removeChangeListener(callback);// remove a particular listener// orresult.removeChangeListeners();// remove all registered listeners
}