即使realmDB中存在数据,Realm where子句也返回0

时间:2016-07-15 13:03:13

标签: android realm

我在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检查了实际数据。

2 个答案:

答案 0 :(得分:2)

在IntentService中,你处于一个不循环的looper线程上。这意味着您的Realm无法在IntentService的线程上自动更新,也无法等待更改。因此,解决方法是使用普通线程并使用waitForChange()而不是IntentService,或者在不再需要它进行操作时关闭Realm,然后使用getDefaultInstance()重新打开它。

答案 1 :(得分:1)

我在Swift中遇到了同样的问题。 Realm在自动刷新方面存在一些问题。

使用 在执行你的子句之前的realm.refresh()。

相关问题