Android Realm 用 waitForChange 替换刷新

标签 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(),它将被阻塞,直到下一次更改发生(当然是在非循环线程中)。

我怎样才能让它不阻塞当前线程,而是在当前 Realm 是最新的时才传递它,或者如果有什么东西应该等待则阻塞?

或者如果我像 Rx 中的 Schedulers.io 这样的非循环线程中使用上述模式的 Realm(每次关闭它),Realm.getInstance() 是否返回总是最新的快照,因为每线程缓存的实例引用为零?

最佳答案

您不必在调用 getInstance() 后立即调用 refresh。从 getInstance() 返回的 Realm 将始终是最新的。

关于Android Realm 用 waitForChange 替换刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431923/

相关文章:

android - ExoPlayer,如何加载远程音频文件的更大部分

java - 自定义工具栏重叠 fragment

javascript - Realm 在 React Native 和 Node.JS 中查找单个对象,例如 MongoDB findOne

swift - 解码 RealmSwift 类中的可选对象列表

swift - 在 Chat App 中为每个用户创建 Realm DB

android - 如何在 Bundle 中发送 RealmObject?

ios - 在多页面 iOS 应用程序上将数据同步到 Realm 后端的最佳方式是什么

android - 动态请求Android权限

java - 单击按钮即可应用多种功能

android - Android 中自定义数据的芯片 UI。 (OR) 自定义 klinker41/android-chips 库来处理自定义数据(EMAIL 和 CONTACTS 除外)