Работал ли с Ciceron

Ответ

Да, работал с 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 — это инструмент для тех, кто любит всё контролировать и кому стандартные решения как серпом по яйцам. Для проектов со своей, хитрой навигацией — самое то. А если тебе просто попрыгать между тремя экранами, то, может, и не стоит себе жизнь усложнять, чувак.