【问题标题】:How to know when data is inserted in table using room?如何知道何时使用房间将数据插入表中?
【发布时间】:2019-10-15 13:36:00
【问题描述】:
我正在使用带有 kotlin 协程的 room 来管理数据库。我需要在将其存储在下一个活动中之后访问存储在数据库中的数据,但由于尚未存储数据,因此出现错误。如何知道数据何时插入到表中?
wordViewModel.insert(it.body()!!.guests[0])
val intent = Intent(this, Main2Activity::class.java)
startActivity(intent)
【问题讨论】:
标签:
kotlin
android-room
kotlin-coroutines
【解决方案1】:
一种方法是在模型实体上创建内容观察器。您可以在线查找教程。基本上,内容观察者就是它的名字所暗示的,它观察内容并通知您是否有新的“内容”可用(在这种情况下是数据库中的更改)。
其他,我想说,更可取的方法是利用 LiveData。在您的Dao 中,您只需添加具有相似签名的方法:
@Query(/*put your select query here*/)
fun getAll(): LiveData<List<YourModelClass>>
然后,在您的活动中,或在您想观察变化的任何地方,调用
yourDao.getAll().observe(this, Observer { /* your observer implementation */ })