在我的应用程序中,我有一个接受ArrayList
ID 并返回RealmList
属于这些 ID 的机器的方法。
public RealmList<Machine> getMachinesById(ArrayList<Long> machineIds) {
RealmList<Machine> machines = new RealmList<Machine>();
for (int i = 0; i < machineIds.size(); i++){
Machine m = getMachineById(machineIds.get(i));
if (m != null) {
machines.add(m);
}
}
return machines;
}
该getMachineById()
函数只是为特定 id 找到正确的机器。
我想进一步过滤这个输出,但是,当我尝试RealmQuery
通过做得到.where()
时,我得到一个异常,告诉我应该把它RealmList
放在“托管模式”。
Caused by: io.realm.exceptions.RealmException: This method is only available in managed mode
at io.realm.RealmList.where(RealmList.java:425)
我知道我收到此错误是因为此列表是独立的,而不是由 Realm 管理。
重要的是要补充一点,这个函数会被调用很多次,因为每次我的应用程序中的某些列表刷新时都会触发它。这意味着(如果可能的话)每次我创建一个新的托管 RealmList。
我的问题:
- 有没有办法让这个 RealmList 由 Realm 管理?
- 如果这是可能的,那么经常调用此函数是否有问题
- 是否有任何其他(首选)方法来实现这一点(ID 列表 > RealmResults/RealmQuery)