Выбор ответа Senior Room и хранение данных обновлено
Поток данных в offline-first
Вопрос
Как организовать загрузку ленты в offline-first приложении?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: UI подписан на Flow из Room; репозиторий пишет ответ сети в базу. В offline-first база это единственный источник правды: UI всегда читает из неё, поэтому экран мгновенно показывает кеш и работает без сети.
Варианты ответа
- UI подписан на
Flowиз Room; репозиторий пишет ответ сети в базуправильный ответ - ViewModel показывает ответ сети сразу, а в фоне сохраняет его в базу на потом
- UI читает ленту из SharedPreferences, куда репозиторий складывает JSON ответа
- Сначала UI ждёт ответа сети, а база используется, только когда интернета нет
Разбор
В offline-first база это единственный источник правды: UI всегда читает из неё, поэтому экран мгновенно показывает кеш и работает без сети. Сетевой запрос только обновляет базу, и Flow из Room доставляет изменения. Если показывать ответ сети напрямую, появляются два источника правды и рассинхрон. SharedPreferences не для таких данных.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.