Android室查询数据库更改
我正在使用最新的Room Persistance Library编写应用程序。 该应用程序讽刺地显示项目列表,并更新此列表随着数据的变化。
当新项目被插入到表格中或者更新时,我希望列表能够自动更新。
我到目前为止尝试了香草LiveData
和LiveData
。 声明都支持这个功能,正如在文档和博客中所述: 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 }
别的地方,数据库是这样修改的:
mDb.messagesDao().add(Message("Some data"))
更新不会推送给观察员。 我想我错过了什么,但是什么?
更新:此问题已解决,答案如下。
我会回答我自己的问题,因为解决方案没有记录。
它看起来像你需要有相同的数据库对象的实例。 在我的情况下,我的Dagger2被错误地配置为每次注入新的DB实例,所以我的Repository
和ViewModel
结束了2个独立的实例。
一旦我使用所有相关方共享的单一数据库实例,所有更新都将正确分发。