Android realmwhere子句返回0,即使realmDB中存在数据

Android realmwhere子句返回0,即使realmDB中存在数据,android,realm,Android,Realm,我在android的IntentService中使用where子句,如果我在前7或8次使用where子句,它会给出所需的输出,但在一定时间后失败,结果为0 Realm realm = Realm.getInstance(ApplicationController.getInstance().getRealmConfig(Constants.SCHEMA_LIVE)); RealmResults<RContactDTO> localContacts = rea

我在android的IntentService中使用where子句,如果我在前7或8次使用where子句,它会给出所需的输出,但在一定时间后失败,结果为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));
            }
Realm Realm=Realm.getInstance(ApplicationController.getInstance().getRealmConfig(Constants.SCHEMA_LIVE));
RealmResults localContacts=realm.where(RContactDTO.class).equalTo(“operationType”,HttpOperation.PUT.name()).findAll();
日志(“更新联系人计数::”+localContacts.size(),Utils.LogType.DEBUG);
ArrayList contactList=新建ArrayList();
RContactDTO RContactDTO=null;
for(RContactDTO rContact:localContacts){
联系人列表。添加(新联系人到(rContact));
}

我通过导出realmDB检查了实际数据。

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

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

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

重新打开它,这样就可以运行相同的代码9次,它工作8次,第9次不工作?是的,第9次后它会随机工作,这是不可预测的,在两次尝试之间不会发生任何事情?当我运行一个新的应用程序时,它工作正常,但在一段时间后失败是否可能在“某段时间”内删除了项目?等等,什么?RealmJava在0.90.0中弃用了
refresh()
,并在1.0.0中删除了它。这不是一个解决办法。自动刷新在实际循环的循环器线程上工作得很好;而非循环线程将使用
waitForChange()
进行更新。