Jetpack Compose — это отличный набор инструментов для создания пользовательского интерфейса, который был тепло встречен сообществом Android-разработчиков. Мне нравится Jetpack Compose, но, как и любая другая технология, он имеет ряд недостатков. В этой статье мы узнаем, в каких случаях лучше использовать систему View и почему (в специальных блоках даются комментарии читателей к этой статье).
1. Наименьшее количество зависимостей
Если вам требуется минимум зависимостей, например, в целях совместимости или безопасности, лучше использовать систему View. Система View не требует дополнительного импорта. Она находится внутри системы Android, в отличие от Jetpack Compose, которая требует множества зависимостей, увеличивая размер пакета и потребление памяти во время выполнения, а также открывая поле для дополнительных рисков.
2. Производительность
Система View существует с первой версии Android, она очень развита, за 15 лет было проведено множество оптимизаций, и ее производительность для сложных макетов обычно выше, чем у Jetpack Compose. Jetpack Compose улучшается с каждой итерацией и уже иногда превосходит View. Следите за этим, View может скоро потерять корону короля производительности.
3. Тесты Espresso
Если у вас много эспрессо-тестов на основе View или если вы хотите использовать функцию записи тестов в Android Studio, лучше отказаться от использования Jetpack Compose или рассматривать Jetpack Compose только для новых экранов.
Невозможно легко перенести эспрессо-тесты на основе View в Compose. Кроме того, функция записи эспрессо-теста недоступна для Compose. Однако можно вручную написать Espresso для тестирования Compose.
4. Стабильность и зрелость
Мы вкратце затронули эту тему в разделе «Производительность». Jetpack Compose существует 3 года, он улучшается с каждым релизом, но время от времени могут появляться ошибки. Кроме того, многие функции Compose все еще являются экспериментальными и требуют аннотации для подключения. Использование экспериментальных функций может быть проблематичным для вашего бизнеса.
// Some feature, like modifier, layout and material design are experimental // and require to OptIn explicitely @OptIn(ExperimentalMaterialApi::class) @OptIn(@ExperimentalFoundationApi::class) @OptIn(ExperimentalComposeUiApi::class) @OptIn(ExperimentalLayoutApi::class)
Если вам требуется очень высокий уровень зрелости и стабильности, лучше остановиться на системе View.
5. Отсутствующие функции
Система View — это часть истории Android. Многие функции Android сначала были доступны в View, а затем перенесены в Compose. Часто Compose может предоставлять только обертку (например, Google Maps). Поэтому вы можете оставить систему View до тех пор, пока эти функции не станут доступны в Compose.
Обратите внимание, что вы можете использовать AndroidView для доступа к этим функциям, доступным только для View, а Compose в конце концов доберется до них.
6. Широко используется в существующих приложениях
Скорее всего, вам придется иметь дело с View в своей карьере. Многие крупные компании по-прежнему используют View, даже если они перешли на Jetpack Compose. Перенос View-экранов на Compose может быть сопряжен с высокой ценой и относительно низкой ценностью для конечных клиентов. Большинство компаний предпочитают переходить на Compose постепенно, сохраняя старые пользовательские интерфейсы с помощью системы View. Вам могут понадобиться навыки работы с View, чтобы эффективно перевести Views на Compose.
7. Размер APK
Если важен размер пакета, вам нужно будет отказаться от Jetpack Compose. Он увеличит размер пакета как минимум на несколько мегабайт, но для уменьшения размера можно включить полный режим R8. Однако система View имеет практически нулевое влияние на размер, поскольку компоненты являются частью системы и не требуют дополнительной библиотеки.
8. Совместимость со старыми устройствами
Jetpack Compose обратно совместим вплоть до Android API 21 (Lollipop, Android 5.0). Если вы хотите использовать предыдущие версии Android, вам придется использовать View.
9. Встраиваемые и IoT-устройства
Устройства, которые служат для одной цели (киоск, платежный терминал, касса самообслуживания), часто работают только с одним приложением и имеют ограниченные ресурсы как процессора, так и оперативной памяти. Jetpack Compose может оказаться слишком тяжелым и потребовать от разработчиков Android использовать систему View, чтобы соответствовать спецификациям устройства.
Кроме того, эти устройства могут работать под управлением старой версии Android, например 4.0.
10. Вам не хочется изучать что-то новое
Возможно, вы находитесь в конце своей карьеры или хотите перейти в другую сферу, но есть ситуации, когда изучение Jetpack Compose не имеет смысла. Кривая обучения крутая, потому что это очень новый подход к разработке пользовательского интерфейса по сравнению с View. Тем не менее, его изучение может быть полезным, поскольку некоторые принципы используются в других фреймворках, например React и Flutter.
Заключение
Jetpack Compose — это отличный набор инструментов пользовательского интерфейса и, безусловно, будущее Android, но это не единственный набор инструментов пользовательского интерфейса, и View демонстрирует отличную работу, хотя некоторые считают его устаревшим. Ппоэтому стоит выбирать то, что соответствует вашим потребностям и ограничениям. Какой бы фреймворк вы ни выбрали, получайте удовольствие! Android-разработка богата и разнообразна, и наша задача как Android-разработчиков — использовать эти преимущества.