Ответ
Да, работал с Cicerone — это навигационный фреймворк для Android, который помогает управлять навигацией между экранами, используя концепцию роутеров и команд.
Преимущества:
- Упрощает навигацию, отделяя логику перехода от Activity/Fragment.
- Подходит для сложных сценариев (например, глубокие ссылки).
- Легко интегрируется с MVP/MVI/MVVM.
Пример:
// Создание роутера и навигатора
val router = Router()
val navigator = SupportAppNavigator(activity, R.id.container)
// Переход на новый экран
router.navigateTo(SomeScreen())
// Обработка команд в Activity
Cicerone.with(router).getNavigatorHolder().setNavigator(navigator)
Минусы:
- Необходимость ручного управления жизненным циклом (например,
setNavigatorвonResume/onPause). - Меньше встроенной анимации по сравнению с Navigation Component.
Хорошо подходит для проектов с кастомной навигацией.
Ответ 18+ 🔞
Ну вот, опять про навигацию в андроиде спрашивают. Слушай, я с этой Cicerone работал — ну, это типа такой фреймворк, чтобы между экранами прыгать, только не как обезьяна с гранатой, а с умом. Там вся фишка в роутерах и командах, чтобы твоя Activity или Fragment не превращались в свалку логики переходов. В общем, отделяет одно от другого, и голова не болит.
Что в плюсах, ёпта:
- Ну, навигацию упрощает конкретно. Всё по полочкам: логика перехода — отдельно, экран — отдельно. Красота.
- Если у тебя там дикие сценарии, вроде глубоких ссылок, которые обычному человеку и не снились, то Cicerone — твой выбор. Справится, не моргнёт глазом.
- Впишется в любую твою архитектуру — MVP, MVI, MVVM — да хоть в UFO. Легко, как влить стопку.
Вот, смотри, как это примерно выглядит, простой пример:
// Создаём роутер и навигатор — основа основ
val router = Router()
val navigator = SupportAppNavigator(activity, R.id.container)
// Хочешь перейти на новый экран? Без проблем!
router.navigateTo(SomeScreen())
// А в Activity не забудь привязать навигатор, иначе нихуя не попрёшь
Cicerone.with(router).getNavigatorHolder().setNavigator(navigator)
А теперь про минусы, их тоже овердохуища:
- Придётся самому, своими ручками, жизненный цикл контролировать. Этот самый
setNavigatorвonResumeиonPauseпихать. Забудешь — приложение накроется медным тазом, и будешь потом искать, где ж ты, сука, косякнул. - Со встроенными анимациями тут не очень. Если хочешь красивый переход — готовься писать сам, или искать костыли. Не то что в том же Navigation Component, где из коробки всё есть.
В общем, Cicerone — это инструмент для тех, кто любит всё контролировать и кому стандартные решения как серпом по яйцам. Для проектов со своей, хитрой навигацией — самое то. А если тебе просто попрыгать между тремя экранами, то, может, и не стоит себе жизнь усложнять, чувак.