Рецепты
События, ошибки и жизненный цикл Entry
Диагностика, централизованные ошибки и ресурсы Entry без распространения конкретного Controller по функциональному коду.
События, ошибки и жизненный цикл Entry
Записать прохождение policy pipeline
Реализуйте NavigationEventSink и передайте его в Session. События различают запрос, Redirect, Guard rejection, Commit Snapshot и непредвиденную ошибку. Сохраняйте ограниченные идентификаторы и причины; не сериализуйте произвольные поля Destination без политики данных.
Централизовать непредвиденные ошибки
NavigationFailureSink получает error, stack trace, request ID и operation. Подключите его на корне композиции к Ark Error Manager, Sentry или существующей системе. Ожидаемый Guard denial остаётся результатом и не отправляется как сбой.
Владеть ресурсом конкретного Entry
Реализуйте NavigationLifecycleObserver:
didEnterсоздаёт Scope или ресурс Entry;didReconfigureобновляет привязки при сохранении идентичности;didExitзакрывает ресурс после Pop, удаления, миграции или shutdown Session.
Используйте ключ NavigationEntryId, а не NavigationRouteId: один Route может присутствовать в стеке несколько раз.
Сохранить узкие зависимости
Page и прикладные сервисы вызывают переходы через NavigationPort. Интеграции Lifecycle и диагностики получают объекты уровня Session на корне композиции, но не заставляют все функциональные части зависеть от NavigationController.