Декларативный UI против View
Вопрос
Чем декларативный Compose отличается от императивной системы View? Какие плюсы и минусы?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
UI как функция от состояния, а не ручные изменения View
Нет синхронизации состояния View и данных вручную
Меньше кода: нет XML, адаптеров, findViewById
Переиспользование через функции и модификаторы
Минусы: рекомпозиции и стабильность, порог входа, размер и прогрев
Интероп: ComposeView и AndroidView для постепенной миграции
Что могут спросить следом
- Как мигрировать большой проект на Compose?
- Как Compose работает с темами Material 3?
Разбор
В системе View я создаю объекты один раз и потом вручную меняю их: textView.text = ..., view.isVisible = .... Состояние размазано между данными и view, и легко забыть обновить что-то, получив рассинхрон. В Compose UI описывается функцией от состояния: я пишу, как экран выглядит для текущего UiState, а фреймворк сам сравнивает и обновляет изменившиеся части. Кода меньше: нет XML, адаптеров RecyclerView, findViewById, а переиспользование это просто функции и модификаторы. Анимации и темы проще. Минусы тоже есть: нужно понимать рекомпозицию и стабильность, иначе легко получить тормоза, первый запуск без Baseline Profile медленнее, а часть старых библиотек есть только как View. Миграцию делаю постепенно: новые экраны на Compose, старые view встраиваю через AndroidView, а Compose в старые экраны через ComposeView.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.