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.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