我正在使用最新的Room Persistance Library编写应用程序 . 该应用程序会显示一个项目列表,并在数据更改时更新此列表 .
当新项目插入表格或更新时,我希望列表自动更新 .
到目前为止,我尝试了香草 LiveData
和 Flowable
. 两者都声称支持此功能,正如文档和此博客中所述: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"))
更新不会推送给观察者 . 我想我错过了什么,但是什么?
Update: 此问题已解决,答案如下 .
1 回答
我会回答我自己的问题,因为没有记录解决方案 .
看起来您需要具有相同的数据库对象实例 . 就我而言,我的Dagger2配置错误,每次都会注入新的DB实例,所以我的
Repository
和ViewModel
最终得到了2个独立的实例 .一旦我使用在所有感兴趣方之间共享的单个数据库实例,所有更新都会正确分发 .