我在等待工作线程上的新数据时遇到问题。数据对象被复制到主线程上的 Realm ,但几乎在那之后我需要从工作线程访问该对象,然后工作线程报告现在 Realm 中不存在这样的对象(其新打开的 Realm 实例)。我记得有一个方法 load()
会阻止执行到下一个更新点,但它在新版本中被删除了。我不能为此使用更改通知,因为这不是 Looper 线程..
我现在能想到的唯一方法就是让线程 hibernate 一段神奇的时间,并向上帝祈祷它已经更新了,但恕我直言,这种方法非常不确定。
有人可以在这里提出建议,我如何确保我读取当时最新的数据?
最佳答案
一种可能的黑客行为是创建一个最终取消的交易。
realm.beginTransaction(); // blocks while there are other transactions
... // you always see the latest version of the Realm here
realm.cancelTransaction();
如果线程在 UI 线程将对象保存到 Realm 后启动,则此方法有效。
您还可以尝试此解决方法:https://stackoverflow.com/a/38839808/2413303 (尽管它对于等待并没有什么帮助)
关于java - 等待线程间realm-java中的数据更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718426/