из бд я получаю в виде флоу, на который я подписываюсь, и если в фоне прилетают новые данные - они попадают в бд и вью тут же узнаёт об этом. У сущности есть флаг wasDisplayed, и мне нужно его поменять когда юзер его увидит. Но, точнее, поменять когда юзер уйдёт с экрана. Я бы мог его менять сразу в адаптере ресайклера и дёргать коллбек, обновляющий бд, но тогда у меня и вью обновится. Как лучше всего решить эту задачу? Догадываюсь, что наверное где-то в onStop надо повесить обновление данных, но это выглядит как-то странно. Как минимум потому что после поворота экрана флаг убирать не нужно.
В onCleared ViewModel (или что вы там используете) не пробовали?
Храни записи wasDisplayed в отдельной табличке
Если тебе важно точное сохранение этих данных, то нужно либо делать это сразу, либо завязываться на onPause \ onSaveInstanceState. Если нет, то ViewModel.onCleared будет самым оптимальным решением.
Как насчёт в адаптере создать Set, в который добавлять позиции просмотренных айтемов. По выходу из экрана айтемы с этими позициями обновлять в бд
Обсуждают сегодня