Я пытаюсь запросить базу данных комнаты (действие 1), а затем на основе возвращенных результатов выполнить другое действие с той же таблицей. однако я заметил, что каждый раз, когда я выполняю второе действие, сопрограмма будет запрашивать базу данных (действие 1). но этого не хочу. просто как пример:
Мой ItemDao:
@Query("SELECT * FROM item_table")
fun selectItems():Flow<List<Item>>
@Insert
suspend fun insertItem(item:Item)
например, я хочу сначала выполнить selectItems()
, и если список пуст, немедленно вызовите insertItem(item)
fun insertIfListEmpty(item:Item){
val job=CoroutineScope(IO).launch {
itemDao.selectItems().collect{
log.d(TAG,"items collected")
if (it.isNullOrEmpty()) {
itemDao.insertItem(item)
}
}
}
}
но после itemDao.insertItem(item)
он снова показывает сообщение журнала. даже если я снова вызываю itemDao.insertItem(item)
из другого метода, он показывает сообщение журнала. есть ли способ отписаться от сопрограммы сразу после сбора?
[email protected]()
- person Animesh Sahu   schedule 09.09.2020