мне Flow<Список объектов>, после получения данных, я обновляю стэйт, с помощью state Flow и передаю этот список, в активити я подписан на изменение state Flow и туда и приходит списочек объектов, непонятен слудеющий момент:при входе в приложение у нас делается запрос в бд и мы обновляем стэйт флоу хорошо, но почему, когда я к примеру удаляю объект из бд, опять же обновляется state Flow и туда приходит обновлённый список, это как - то связано с тем, что мы возвращаем Flow и state Flow подписывается на изменение бд? Спасибо
Ты конечно не дал свой код, но Flow работает до тех пор пока ты от него не отпишешься, скорее всего ты юзаешь какой то рум, а он после обновления базы будет опять тебе слать данные через Flow, как выход могу посоветовать отписаться от базы после получения данных.
Я подписываюсь не на сам Flow а на state Flow, которому я отдал список всех объектов при входе в приложение Если бы я сделал так : val objects = repo.allObjects() А в активити подписался бы на этот флоу, то я понимаю, почему нам приходит обновление в это флоу, при каких либо изменениях в бд, но почему когда я делаю так : val objects = repo.allObjects().collect{ _uiState.value = it } Стэйт также начинает обновляться при любых изменениях, ведь его обновление вызывается 1 раз, когда при входе я делаю запрос в бд, однако его обновление вызывается каждый раз при удалении или вставки в бд нового объекта и туда уже приходит обновлённый список объектов
State flow этот тот же flow и от него тоже нужно отписаться, тебе возвращает все данные с бд, потому что ты подписан на них
Обсуждают сегодня