0

我正在使用最新的房间持久性库编写应用程序。该应用程序简单地显示项目列表并随着数据更改更新此列表。

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

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

这是ViewModelKotlin 中的代码片段:

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

在其他地方,数据库被修改如下:

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

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

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

4

1 回答 1

3

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

看起来您需要拥有相同的数据库对象实例。就我而言,我的 Dagger2 被错误配置为每次都注入新的数据库实例,所以我的RepositoryViewModel最终有 2 个单独的实例。

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

于 2017-08-13T11:12:01.900 回答