Выбор ответа Senior Room и хранение данных обновлено

Поток данных в offline-first

Вопрос

Как организовать загрузку ленты в offline-first приложении?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: UI подписан на Flow из Room; репозиторий пишет ответ сети в базу. В offline-first база это единственный источник правды: UI всегда читает из неё, поэтому экран мгновенно показывает кеш и работает без сети.

Варианты ответа

  1. UI подписан на Flow из Room; репозиторий пишет ответ сети в базуправильный ответ
  2. ViewModel показывает ответ сети сразу, а в фоне сохраняет его в базу на потом
  3. UI читает ленту из SharedPreferences, куда репозиторий складывает JSON ответа
  4. Сначала UI ждёт ответа сети, а база используется, только когда интернета нет

Разбор

В offline-first база это единственный источник правды: UI всегда читает из неё, поэтому экран мгновенно показывает кеш и работает без сети. Сетевой запрос только обновляет базу, и Flow из Room доставляет изменения. Если показывать ответ сети напрямую, появляются два источника правды и рассинхрон. SharedPreferences не для таких данных.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.