在 v0.91.0 之后,Realm 中所有弃用的方法都被删除,包括 refresh()
。
我使用如下所示的 refresh()
来确保 Realm 实例具有最新数据。
public static <T> T query(RealmActionWithResult<T> runnable, T defaultValue) {
Realm realm = Realm.getInstance(getConfiguration());
try {
realm.refresh();
return runnable.run(realm);
} catch (Exception e) {
return defaultValue;
} finally {
realm.close();
}
}
如果我将 refresh()
替换为 waitForChange()
,它将被阻塞,直到下一次更改发生(当然是在非循环线程中)。
我怎样才能让它不阻塞当前线程,而是在当前 Realm 是最新的时才传递它,或者如果有什么东西应该等待则阻塞?
或者如果我像 Rx 中的 Schedulers.io
这样的非循环线程中使用上述模式的 Realm(每次关闭它),Realm.getInstance()
是否返回总是最新的快照,因为每线程缓存的实例引用为零?
最佳答案
您不必在调用 getInstance()
后立即调用 refresh
。从 getInstance()
返回的 Realm 将始终是最新的。
关于Android Realm 用 waitForChange 替换刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431923/