当不在查询中的对象更改时,RoomDatabase 通知 Flow
RoomDatabase notifying Flow when object not in query changed
我注意到 Room 正在通知订阅了 ID X 元素的流,其中包含 ID Y 元素的更改。我一直认为并且发展成这样的想法,即只有查询中的项目才会通知更改。我总是错的吗?我在 room 2.2.6 和最新的 beta 2.3.0 中发现了这种行为,所以我只能想象这不是一个错误?
您可以使用 'Flow#distinctUntilChanged()':
db.getElementById(x.id).distinctUntilChanged().collect {
// do something
}
这是 Google 开发倡导者 Florina Muntenescu 推荐的用法。你可以在这里阅读更多:
https://medium.com/androiddevelopers/room-flow-273acffe5b57
Room 中反应式更新的粒度为table,并加入了tables。因此,如果您写入 table,那么任何观察到给定 table 的查询都将失效并重新获取。
我注意到 Room 正在通知订阅了 ID X 元素的流,其中包含 ID Y 元素的更改。我一直认为并且发展成这样的想法,即只有查询中的项目才会通知更改。我总是错的吗?我在 room 2.2.6 和最新的 beta 2.3.0 中发现了这种行为,所以我只能想象这不是一个错误?
您可以使用 'Flow#distinctUntilChanged()':
db.getElementById(x.id).distinctUntilChanged().collect {
// do something
}
这是 Google 开发倡导者 Florina Muntenescu 推荐的用法。你可以在这里阅读更多: https://medium.com/androiddevelopers/room-flow-273acffe5b57
Room 中反应式更新的粒度为table,并加入了tables。因此,如果您写入 table,那么任何观察到给定 table 的查询都将失效并重新获取。