Выбор ответа Middle Офлайн и синхронизация спрашивают часто обновлено
Очередь исходящих изменений
Вопрос
Пользователь без сети поставил лайк и написал комментарий. Как надёжно доставить это на сервер?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Записать изменения в локальную базу и в очередь операций (outbox), синхронизатор отправит их позже. Outbox хранит операции на диске, поэтому они переживают закрытие приложения и перезагрузку.
Варианты ответа
- Держать запросы в памяти синхронизатора и повторить их все по порядку, когда сеть вернётся
- Записать изменения в локальную базу и в очередь операций (outbox), синхронизатор отправит их позжеправильный ответ
- Показать ошибку и попросить повторить позже, чтобы не рисковать рассинхронизацией с сервером
- Отправить изменения через push-уведомление: оно доставится, когда устройство появится в сети
Разбор
Outbox хранит операции на диске, поэтому они переживают закрытие приложения и перезагрузку. Синхронизатор (WorkManager на Android, BGTaskScheduler и фоновая сессия на iOS, плюс запуск при старте и появлении сети) отправляет их по порядку и удаляет после подтверждения. Очередь в памяти теряется при выгрузке процесса. Ошибка вместо действия это не офлайн-режим. Push работает в другую сторону.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.