关于db更改的Android Room requery

时间:2017-08-13 09:35:55

标签: android android-sqlite android-room android-architecture-components

我正在使用最新的Room Persistance Library编写应用程序。 该应用程序会显示一个项目列表,并在数据更改时更新此列表。

当新项目被插入表格或更新时,我希望列表能够自动更新。

到目前为止,我尝试了香草LiveDataFlowable。声称两者都支持此功能,正如文档和此博客中所述: https://medium.com/google-developers/room-rxjava-acb0cd4f3757

这是Kotlin中的ViewModel代码段:

messagesFlowable = db.messagesDao().all()
messagesFlowable
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe {
            Log.d(TAG, "Received 1 list of %s items", it.size)
            messages.value = it
         }

在其他地方,db被修改如下:

mDb.messagesDao().add(Message("Some data"))

更新不会推送给观察者。我想我错过了什么,但是什么?

更新:此问题已解决,答案如下。

1 个答案:

答案 0 :(得分:2)

我会回答我自己的问题,因为没有记录解决方案。

看起来您需要拥有相同的数据库对象实例。 就我而言,我的Dagger2配置错误,每次都会注入新的数据库实例,因此我的RepositoryViewModel最终只有两个不同的实例。

一旦我使用在所有感兴趣的各方之间共享的单个数据库实例,所有更新都会正确分发。