使用waitForChange进行Android Realm repalce刷新

时间:2016-05-25 08:41:54

标签: android realm

在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总是返回最新的快照,因为每线程缓存的实例引用为零?

1 个答案:

答案 0 :(得分:1)

调用refresh后,您不必立即致电getInstance()。从getInstance()返回的领域将始终是最新的。