在多个进程中获取LiveData更新

时间:2017-07-29 00:59:41

标签: android android-room multiprocess android-livedata

在我的Android应用程序中,我使用Room API来保存来自网络的数据。该应用程序分为几个进程,其中一个负责同步数据(实现SyncAdapter)。 UI在不同的进程上运行,它有自己的DAO来访问数据库。 我的问题是,当SyncAdapter将新数据写入数据库时​​,UI进程上的LiveData I查询没有得到任何更新。因为DB是在进程之间共享的,所以我期望在具有反映数据库的LiveData的所有进程上调用OnChanged,这意味着所有进程都可以观察到数据库更改

2 个答案:

答案 0 :(得分:3)

房间2.1.0中引入的

enableMultiInstanceInvalidation可能对您有帮助 official docs

答案 1 :(得分:1)

您需要实现自己的IPC机制,以便将事件从进程传递到进程。这与直接使用SQLite或使用大多数其他观察者框架(例如,数据绑定可观察对象)没有显着差异。

或者,切换到单个进程,在这种情况下,您现有的实现可能正常工作。