Выбор ответа Senior Навигация обновлено
Навигация между feature-модулями
Вопрос
Как организовать переход из :feature:feed на экран из :feature:profile, не создавая зависимости между фичами?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Фичи экспортируют NavGraphBuilder.profileScreen(), а app связывает их колбэками. Прямые зависимости между фичами ведут к циклам и долгой сборке.
Варианты ответа
- Добавить зависимость
feed → profileи вызывать навигацию к профилю напрямую - Использовать неявные Intent с action между Activity каждой фичи
- Объединить фичи в один модуль, раз они ссылаются друг на друга
- Фичи экспортируют
NavGraphBuilder.profileScreen(), аappсвязывает их колбэкамиправильный ответ
Разбор
Прямые зависимости между фичами ведут к циклам и долгой сборке. Обычный приём: фича объявляет свой граф расширением NavGraphBuilder и принимает колбэки вроде onOpenProfile(userId), а app связывает их, вызывая navController.navigate(Profile(userId)). Маршруты можно вынести в лёгкие API-модули. Неявные Intent между Activity ломают single-activity архитектуру, а слияние модулей отменяет модульность.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.