Выбор ответа Middle Офлайн и синхронизация спрашивают часто обновлено

Очередь исходящих изменений

Вопрос

Пользователь без сети поставил лайк и написал комментарий. Как надёжно доставить это на сервер?

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

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

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

Коротко

Правильный ответ: Записать изменения в локальную базу и в очередь операций (outbox), синхронизатор отправит их позже. Outbox хранит операции на диске, поэтому они переживают закрытие приложения и перезагрузку.

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

  1. Держать запросы в памяти синхронизатора и повторить их все по порядку, когда сеть вернётся
  2. Записать изменения в локальную базу и в очередь операций (outbox), синхронизатор отправит их позжеправильный ответ
  3. Показать ошибку и попросить повторить позже, чтобы не рисковать рассинхронизацией с сервером
  4. Отправить изменения через push-уведомление: оно доставится, когда устройство появится в сети

Разбор

Outbox хранит операции на диске, поэтому они переживают закрытие приложения и перезагрузку. Синхронизатор (WorkManager на Android, BGTaskScheduler и фоновая сессия на iOS, плюс запуск при старте и появлении сети) отправляет их по порядку и удаляет после подтверждения. Очередь в памяти теряется при выгрузке процесса. Ошибка вместо действия это не офлайн-режим. Push работает в другую сторону.

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

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