Жизненный цикл и навигация нативных мобильных приложений¶
Требования применяются к состоянию и навигации приложений iOS и Android.
Уровни обязательности определены в корневом README.md.
MOB-PLAT-005. Восстановление UI state¶
Уровень: MUST
Применяется к: background, process death и configuration change
Значимое незавершённое состояние должно восстанавливаться из минимального сериализуемого state. SwiftUI/Compose view state не должен быть единственным источником результата операции. После восстановления должны повторно проверяться сессия и доступ.
Обоснование¶
ОС может уничтожить процесс без пользовательского завершения сценария.
Проверка¶
- process death и relaunch;
- Android configuration change;
- тест истёкшей сессии при restore.
Исключения¶
Чувствительное одноразовое состояние должно безопасно сбрасываться.
MOB-PLAT-008. Контракт системной навигации¶
Уровень: MUST
Применяется к: экрану, modal-состоянию или пользовательскому сценарию с переходом назад либо закрытием
Проект должен определять логический результат системного Back, платформенного жеста, прикладной кнопки возврата и закрытия modal-состояния. Эквивалентные действия не должны приводить к разным обязательным эффектам. Возврат, восстановление state и повторное вычисление UI не должны повторно запускать необратимую операцию.
После входа через deep link или notification back stack должен закрываться либо вести только к объявленному доступному родительскому состоянию. Он не должен раскрывать экран предыдущего аккаунта, защищённое состояние после logout или маршрут, доступ к которому не прошёл повторную проверку.
Для несохранённого пользовательского ввода контракт должен выбирать сохранение черновика, подтверждённый отказ от изменений либо явное предупреждение перед потерей. Уход, background и process death должны сохранять или удалять такой ввод согласно одному объявленному lifecycle.
Обоснование¶
Платформа может восстановить или закрыть экран другим путём, чем прикладная кнопка, а ошибочный back stack способен повторить эффект или показать защищённые данные.
Проверка¶
- UI-тест системного Back, жеста и прикладной кнопки;
- cold/warm deep link и notification с последующим возвратом;
- тест logout или смены аккаунта при существующем back stack;
- тест несохранённого ввода при уходе, background и process death;
- проверка отсутствия повторного необратимого эффекта после restore.
Исключения¶
Одноэкранное приложение без вложенной навигации MAY закрываться системным Back без родительского маршрута; требования к защищённому состоянию, вводу и необратимому эффекту сохраняются.