Выбор ответа Senior Навигация обновлено

Навигация между feature-модулями

Вопрос

Как организовать переход из :feature:feed на экран из :feature:profile, не создавая зависимости между фичами?

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

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

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

Коротко

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

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

  1. Добавить зависимость feed → profile и вызывать навигацию к профилю напрямую
  2. Использовать неявные Intent с action между Activity каждой фичи
  3. Объединить фичи в один модуль, раз они ссылаются друг на друга
  4. Фичи экспортируют NavGraphBuilder.profileScreen(), а app связывает их колбэкамиправильный ответ

Разбор

Прямые зависимости между фичами ведут к циклам и долгой сборке. Обычный приём: фича объявляет свой граф расширением NavGraphBuilder и принимает колбэки вроде onOpenProfile(userId), а app связывает их, вызывая navController.navigate(Profile(userId)). Маршруты можно вынести в лёгкие API-модули. Неявные Intent между Activity ломают single-activity архитектуру, а слияние модулей отменяет модульность.

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

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

Термины по теме