插入Android Room表格而不触发发射吗?

时间:2018-08-18 15:37:06

标签: android android-room android-architecture-components android-database

是否有一种方法可以静默插入/更新您正在观察的“房间”表,而不会引起发射?我有一个表,在这种情况下,我不想被通知更改,但仍将其保留在同一表中。我不是指我可以忽略的特定列,因为在其他情况下我确实想要发射...我正在寻找一种特殊的插入方式,以便在以后不会触发我的“ getAll()” flowable我执行了这一特殊情况插入。

我正在考虑的当前解决方案是有一列(布尔类型),我将“忽略”该列,并在此特殊插入上将其设置为true。在下一次发射时(应该是瞬时的,我不在乎)...检查该列中的所有布尔值,如果已设置,则放下发射并取消设置标志。感觉很奇怪,尽管这样做。我宁愿进来也不愿出门。

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. LiveData正在观察RoomDatabase的InvalidationTracker
  2. InvalidationTracker检查表版本以在调用RoomDatabase.endTransaction时触发Observers(LiveData)。

---底行---

A。您可以使用RoomDatabase.query()进行插入/更新。

B。如果您创建两个RoomDatabase实例,则通过A实例的dao插​​入/更新不会触发B实例的InvalidationTracker。

快乐的编码