在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()
,它将被阻止,直到下一次更改发生(当然在非looper线程中)。
如何让它不阻止当前线程,但只是在当前域是最新的时传递它或者阻塞是否有等待的东西?
或者,如果我在Rx中的{* 1}}之类的非looper线程中使用类似于上面模式的Realm(每次关闭它),Schedulers.io
总是返回最新的快照,因为每线程缓存的实例引用为零?
答案 0 :(得分:1)
调用refresh
后,您不必立即致电getInstance()
。从getInstance()
返回的领域将始终是最新的。