【发布时间】:2017-01-11 08:30:27
【问题描述】:
您好,我在我的 android 应用程序上运行了一项服务。
在该服务中,我有一个TimerTask,我在同步保存在主 UI 线程上的数据时遇到问题,TimerTask 每 5 秒运行一次。
例子
UI 线程 - 100 条记录
TimerTask 线程 - 0 条记录
每次TimeTask 时,我都会关闭该线程上的 Realm 实例,试图在下一次执行时获取更新的实例。
我似乎关闭选项不会暂时从缓存中删除实例,所以下次我做Realm.getInstance() 时它提供的和以前一样。
关于在运行TimerTask 时如何让两个线程具有相同数据的任何想法?
【问题讨论】:
-
Realm,默认情况下提供跨多个线程的同步数据,只要你不复制结果,添加一个 changeListener 并使用 LIVE 数据。只要两个线程都使用相同的 Realm 数据库文件,您就不必再次关闭和打开 Realm。分享更多代码以了解更多详情。
-
@VirajTank 我认为 TimerTask 是一个非循环后台线程线程,所以它不会自动同步。
-
@EpicPandaForce - 啊哈,确实错过了那部分,但它仍然应该适用于新查询,问题似乎是别的。
-
@VirajTank 不,他的后台线程不会自动更新,因此缓存不会增加版本。例如,他可以在事务中执行此操作,然后他会看到最新的数据
-
正如@EpicPandaForce 建议的那样,在 TimeTask 上打开交易对我有用。我没有尝试 changeLister,因为我不会根据数据更新做出反应,而是根据 TimerTask 时间表检查所有情况。感谢大家的帮助
标签: android multithreading realm