Compose 1.5来了,升吗?

Compose 终于迎来了 1.5.0 的稳定版本。这个版本的 API 变化不大,官方主要是做了大量的性能优化工作和降低内存占用。

API 新增与变更

首先,官方提供了 mutableIntStateOfmutableLongStateOfmutableFloatStateOfmutableDoubleStateOf 这些方法来为基础类型服务,其主要是因为 mutableStateOf 使用了泛型,那么对于基础类型就会有一个自动装箱和拆箱的过程,虽然一次装箱与拆箱性能损失微乎其微,但是如果多了起来,那就还是有点耗费性能了。而恰恰 Compose 是严重依赖 State 的。

而由于 State 是必须要放在 remeber 里被记忆才有意义的,所以官方也提供了 @StateFactoryMarker 这个注解来标识函数产生的结果必须放在 remeber 里使用,这个对于库的开发者应该很有必要使用,帮助库的使用者避开一些不必要的错误。

Pager 组件的 pagerCount 移到了 PagerState 里,这可能是唯一一个强制开发变更的组件。

由于动画系统的趋于稳定,所以 navigation-composeaccompanist 里把动画部分合进来了,所以可以抛弃 accompanistnavigation-animation 了,迁移也基本上就是改改包名。具体 accompanist 文档也给出了迁移需要替换的内容,可查看文档

性能提升

Compose 系统一个性能杀手是 Modifier 的巨额使用和深层次嵌套,所以去年官方给出了 Modifier.Node 这个新的 API 来重构 Modifier 系统,其与旧实现可以并存而不悖,而且完全重构也是个巨大的工程量,所以官方是从底层到上层逐步替换的。今年的每个版本,官方都会替换一部分,这个版本官方完成了包括 clickablescrollableModifier,官方说最高可以将重组时间缩短 80%。

BasicText 也迁移到了新的渲染系统,这个也得益于 Modifier 的持续改进,官方说可以将首次重组时间缩短 20% 以上。其次 TextMeasurerLineHeightStyle.Alignment(topRatio)BrushDrawStyle 等接口现在已经稳定了。

除此之外,官方进行了一些了的内存占用优化,特别是解决了 ComposeView 的一个内存泄漏问题,这其实是比较严重的问题了,从这个角度来看,大家应该尽快升级。

Compose 不被采纳的一个主要原因就是大家还是觉得它性能和 View 系统有一些差距,但从 1.3.0 开始,差距已经不那么明显了,经过官方的不懈努力,这个差距已经变得越来越小,而且随着官方在在编辑器的 Live Edit 的不懈努力,开发体验可能会完爆 xml,早用早享受。

其它

Compose Compiler1.5.0 版本还提供了 kotlin 1.9K2 编译器的支持,目前可以在 gradle.properties 里添加支持:

kotlin 复制代码
kotlin.experimental.tryK2=true

因为目前还是 beta 版本,所以不能用于生成环境,开发阶段还是可以用的,可以感受下其编译速度的提升。

最后

emo 基本已经完成升级适配了,不过由于还依赖了 accompanist 的其它子库,所以要等它升级后才能释放新版本。

也吐槽下 constraintLayout-compose 这个库,一直游离在在官方版本规则之外,也始终没有出稳定版,最新版本依赖了 Compose 1.6.x,所以目前只能使用 1.1.0-alpha10,使用时一定要注意。


我是古哥E下,前微信读书客户端程序猿 / 自学 5 年中医,维护过上万 Star 开源项目 QMUI Android,现独立维护好用简洁的 Android 组件库 emo

关注我可得:ChatGPT 开发玩法 | 程序员学习经验 | 组件库新变动 | 中医健康调理 。

emo官网:emo.qhplus.cn

相关推荐
Android小码家2 小时前
Framework之Launcher小窗开发
android·framework·虚拟屏·小窗
赏金术士2 小时前
第七章:状态管理实战与架构总结
android·ui·kotlin·compose
颂love3 小时前
MySQL的执行流程
android·数据库·mysql
云起SAAS8 小时前
抖音小游戏源码 - 消消乐 | 含激励广告+成就系统 | 开箱即用商业级消除游戏模板
android·游戏·广告联盟·看激励广告联盟流量主·抖音小游戏源码 - 消消乐
大貔貅喝啤酒9 小时前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
程序员码歌9 小时前
OpenSpec 到 Superpowers:AI 编码从说清到做对
android·前端·人工智能
2501_915106329 小时前
深入解析无源码iOS加固原理与方案,保护应用安全
android·安全·ios·小程序·uni-app·cocoa·iphone
黄林晴13 小时前
重磅官宣:Android UI 开发正式进入 Compose-first 时代
android·google io
Kapaseker13 小时前
搞懂变换!精通 Compose 绘制(二)
android·kotlin
美狐美颜SDK开放平台14 小时前
美颜SDK开发详解:如何优化美颜SDK在低端安卓机上的性能?
android·ios·音视频·直播美颜sdk·视频美颜sdk