不使用Jetpack Compose的10个理由

本文译自10 reasons to NOT use Jetpack Compose,原文发布于2024年9月24日。

译者按:软件开发行业从不缺少优秀的工具,当然也没有银弹。身为开发者要学会选择合适的工具,避免出现手里拿着锤子,看什么都是钉子。那么就需要搞清楚两个事情,一个是面临的到底是什么样的问题,以及每种工具它的合适场景是什么。没有对与错,只有合适不合适。这篇文章就是帮助大家更清晰地了解到Jetpack Compose适用的场景,帮助Android开发者做出最合适的选择。

简介

Jetpack Compose 是一款出色的 UI 工具包,受到 Android 社​​区的热烈欢迎。它提供了一种为你的 Android 应用构建令人愉悦的 UI 的现代方式。

我确实喜欢 Jetpack Compose,但与任何技术一样,它也有一些注意事项。在本文中,我们将了解在什么情况下使用 View 系统更为明智以及原因。

1. 尽可能减少依赖

如果你需要尽可能少的依赖项,这可能是出于兼容性或安全性目的,那么使用 View 系统可能会更好。View 系统不需要额外的导入。它位于 Android 系统内部,与 Jetpack Compose 不同,后者需要大量依赖项,这会增加包占用空间和运行时的内存使用量,并为额外的风险打开大门。

2. 性能

View 系统自 Android 的第一个版本以来就一直存在,它非常成熟,15 年来已经进行了大量优化,对于复杂的布局,其性能通常比 Jetpack Compose 更好。Jetpack Compose 在每次迭代中都在改进,有时已经比 View 更好,请关注这个领域,View 可能很快就会失去性能之王的桂冠!

3. Espresso测试

如果你有大量基于 View 的 Espresso 测试,或者想要使用 Android Studio 中的测试记录功能,最好避免使用 Jetpack Compose,或者只考虑将 Jetpack Compose 用于新的页面。无法轻松将于View 的 Espresso 测试迁移到 Compose。此外记录 Espresso 测试功能不适用于 Compose。但是,可以手动编写 Espresso来测试 Compose。

4. 稳定性和成熟度

我们在「性能」部分简要提到了这一点。Jetpack Compose 已有 3 年历史,每次发布都会有所改进,但有时可能会出现错误。此外,许多 Compose 功能仍处于实验阶段,需要注解才能使用。使用实验性功能可能会给你的业务带来潜在的问题。

Kotlin 复制代码
// 有些特性,如Modifier,Layout和Material Design是实验性质的,需要显式的用OptInt。
@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。许多大公司即使采用了 Jetpack Compose,仍然使用 View。将 View 页面迁移到 Compose 可能会带来高昂的成本,而对最终客户而言,价值相对较低。大多数公司选择逐步采用 Compose,使用 View 系统来维护较旧的 UI。你可能需要 View 技能才能有效地将 View 转换为 Compose。

7.APK 大小

如果你担心软件包的大小,你可以重新考虑是否采用 Jetpack Compose。它将使你的软件包大小至少增加几MB,虽然你可以启用R8 完整模式以进一步减小大小。但是,View 系统的占用的额外空间几乎为零,因为组件是系统的一部分,不需要额外的库。

8. 与旧设备的兼容性

Jetpack Compose 最高可兼容 Android API 21(Lollipop🍭 、Android 5.0)。如果你想要针对性地适配以前的 Android 版本,则必须使用 View。

9. 嵌入和物联网设备

单一用途的设备(自助服务终端、支付终端、自助结账)通常只运行一个应用,并且 CPU 和 RAM 资源有限。对于这些设备来说,Jetpack Compose 可能太重了,可能需要 Android 开发人员使用 View 系统来适应设备规格。这些设备也可能运行比较旧的Android版本,如 4.0 版。

10. 你不想学习新东西

也许你已经接近职业生涯的尾声,或者想要转到其他领域,那么在某些情况下,学习 Jetpack Compose 是没有意义的。学习曲线有点陡峭,因为与 View 相比,这是一种非常新的 UI 开发方法。不过,学习它可能很有用,因为其他框架(如 React 和 Flutter)也使用了某些类似的原理。

结论

Jetpack Compose 是一款出色的 UI 工具包,无疑是 Android 的未来,但它并不是唯一的 UI 工具包,View 已经证明它工作得很好,虽然有些人认为它是遗留的,但最好选择适合你的需求和限制的框架。 无论你选择哪种框架,玩得开心!Android 开发丰富多样,作为 Android 开发人员,我们的职责就是利用这些优势。

感谢你阅读本文,希望你喜欢并学到一些东西。请帮忙点赞,以表示你的支持!

本文由Android 开发者新闻赞助,在Play 商店下载应用程序。

欢迎搜索并关注 公众号「稀有猿诉」 获取更多的优质文章!

保护原创,请勿转载!

相关推荐
拉不拉了个多1 小时前
Compose UI 中万能的 Modifier
android·kotlin·android jetpack
居然是阿宋1 小时前
Java/Kotlin 开发者如何快速入门 C++
java·c++·kotlin
daily_23333 小时前
c++领域展开第十五幕——STL(String类的模拟实现)超详细!!!!
android·开发语言·c++
m0_7482350713 小时前
【MySQL】数据库开发技术:内外连接与表的索引穿透深度解析
android·mysql·数据库开发
werch14 小时前
兼容移动端ios,安卓,web端底部软键盘弹出,输入框被遮挡问题
android·前端·ios
峥嵘life15 小时前
Android14 串口控制是能wifi adb实现简介
android·adb
q5673152316 小时前
将 XML 文件转换为字典形式
android·xml·java·开发语言
MuggleStarter17 小时前
一文读懂Jetpack LifeCycle的特性和实现
android·面试
Fastcv17 小时前
DataStore-SharedPreference知识点
android