В Android есть библиотеки для работы с навигацией, но часто они представляют собой базовый инструмент без строгих правил по его применению. Это зачастую приводит к распространению логики навигации за пределы ее ответственности, сращиванию с presentation-уровнем, росту связности с другими компонентами. Возникает хаос, которого стоит избегать.
В проекте LANG (один из международных продуктов Skyeng для изучения иностранных языков) мы взяли за основу популярный подход и доработали его. Наша структура позволяет максимально отделить навигацию от presentation-слоя, гибко использовать и масштабировать ее в рамках разных модулей.
Такой подход к навигации не зависит от роста количества уровней вложенности, что позволяет держать трудозатраты на разработку ближе к прямой зависимости времени разработки от масштаба требований бизнеса.