【发布时间】:2021-01-30 14:05:28
【问题描述】:
我注意到 Room 正在通知订阅了 id X 元素的流对 id Y 元素的更改。我一直认为并发展认为只有查询中的项目会通知更改。我总是错了吗?我在房间 2.2.6 和最新的 beta 2.3.0 中发现了这种行为,所以我只能想象这不是错误?
【问题讨论】:
标签: android android-room android-jetpack
我注意到 Room 正在通知订阅了 id X 元素的流对 id Y 元素的更改。我一直认为并发展认为只有查询中的项目会通知更改。我总是错了吗?我在房间 2.2.6 和最新的 beta 2.3.0 中发现了这种行为,所以我只能想象这不是错误?
【问题讨论】:
标签: android android-room android-jetpack
Room 中响应式更新的粒度是表格和连接表格。因此,如果您写入表,那么任何观察到给定表的查询都将失效并重新获取。
【讨论】:
您可以使用“Flow#distinctUntilChanged()”:
db.getElementById(x.id).distinctUntilChanged().collect {
// do something
}
这是 Google 开发倡导者 Florina Muntenescu 推荐的用法。你可以在这里阅读更多: https://medium.com/androiddevelopers/room-flow-273acffe5b57
【讨论】: