Комната Android: избегайте запуска наблюдаемого при обновлении, инициируемом пользовательским вводом - PullRequest
0 голосов
/ 26 апреля 2019

При типичном рабочем процессе, использующем компоненты архитектуры Android, сетевое чтение заполняет комнатную базу данных, а живые данные наблюдают за изменениями, а затем просматривают обновление триггеров представления модели, что мне вполне подходит.Тем не менее, у меня есть пользовательский ввод, который изменяет один из столбцов в БД (через модель представления).Обновление в порядке, но затем оно вызывает getItems (), потому что БД обновляется и весь пользовательский интерфейс обновляется.Поскольку он инициирован пользовательским интерфейсом, мне не нужно обновлять данные из БД.

Есть ли способ сообщить БД "просто примите мое обновление, не вызывайте обновление назад"?

@Query("SELECT * FROM ${ItemEntity.ITEM_TABLE_NAME} WHERE ${ItemEntity.TYPE} = :type ORDER BY ${ItemEntity.TIMESTAMP_SEC} DESC LIMIT :offset, :count")
fun getItems(offset:Int, count:Int, type: String): Flowable<List<ItemEntity>> 

@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insertAll(items: List<ItemEntity>)

Я могу использовать Single вместо Flowable, но не получу обновления, если БД изменилась из-за последующего обновления сети.

...