Ответ вслух Middle Офлайн и хранение обновлено

Офлайн-режим в мобильном приложении

Вопрос

Спроектируйте офлайн-режим для приложения списка задач: что храним, как синхронизируем.

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «UI читает данные из локальной базы, например SQLite через WatermelonDB, поэтому без сети всё работает. Любое изменение сразу применяется локально и записывается в очередь операций в той же базе, с ключом идемпотентности.

Что должно прозвучать в ответе

  • Локальная база (SQLite/WatermelonDB) как источник правды для UI

  • Изменения применяются локально сразу и пишутся в постоянную очередь

  • Отправка очереди по порядку при появлении сети, повторы с задержкой, идемпотентность

  • Получение изменений с сервера (дельта по времени или версии) и разрешение конфликтов

  • Индикация состояния синхронизации пользователю

  • Токены в защищённом хранилище, данные пользователя чистятся при выходе

Что могут спросить следом

  • Как получить с сервера только изменённые задачи?
  • Что показать пользователю, если операция окончательно не прошла?
  • Как тестировать офлайн-сценарии?

Разбор

Образцовый ответ: «UI читает данные из локальной базы, например SQLite через WatermelonDB, поэтому без сети всё работает. Любое изменение сразу применяется локально и записывается в очередь операций в той же базе, с ключом идемпотентности. Синхронизатор при появлении сети отправляет операции по порядку: успех удаляет из очереди, сетевая ошибка останавливает и повторяет позже с растущей задержкой, ошибка валидации помечает операцию и показывает пользователю. Затем забираю изменения с сервера с момента последней синхронизации по версии. Конфликты решаю по версиям: сервер отвечает 409, я сливаю поля или прошу пользователя выбрать. В интерфейсе показываю, что есть неотправленные изменения. При выходе чищу локальные данные»

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

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