我在android中使用IntentService中的where子句,如果我使用where子句前7或8次它给我所需的输出但是在一定时间后它失败并为结果给出0
Realm realm = Realm.getInstance(ApplicationController.getInstance().getRealmConfig(Constants.SCHEMA_LIVE));
RealmResults<RContactDTO> localContacts = realm.where(RContactDTO.class).equalTo("operationType", HttpOperation.PUT.name()).findAll();
Utils.Log("update contact count ::: " + localContacts.size(), Utils.LogType.DEBUG);
ArrayList<ContactDTO> contactList = new ArrayList<ContactDTO>();
RContactDTO rContactDTO = null;
for(RContactDTO rContact : localContacts){
contactList.add(new ContactDTO(rContact));
}
我已通过导出realmDB检查了实际数据。
答案 0 :(得分:2)
在IntentService中,你处于一个不循环的looper线程上。这意味着您的Realm无法在IntentService的线程上自动更新,也无法等待更改。因此,解决方法是使用普通线程并使用waitForChange()
而不是IntentService,或者在不再需要它进行操作时关闭Realm,然后使用getDefaultInstance()
重新打开它。
答案 1 :(得分:1)
我在Swift中遇到了同样的问题。 Realm在自动刷新方面存在一些问题。
使用 在执行你的子句之前的realm.refresh()。