Jetpack Compose 可提供开箱即用的卓越性能。使用最佳实践配置应用,以避免常见误区并优化 Compose 应用的性能。
Android skills
在 GitHub 上查看Jetpack Compose 性能
使用 Jetpack Compose 性能 Android 技能,诊断和优化 Android 项目中的 Jetpack Compose 界面性能。
如需从 Android CLI 安装技能,请运行以下命令:
android skills add jetpack-compose-performance对 Jetpack Compose 进行基准测试
为了验证 Jetpack Compose 相对于 View 的性能,我们使用了核心基准,这些基准专注于重要的真实用户体验历程,例如冷启动应用或滚动包含图片的列表或网格。我们使用开源 Pokedex 应用进行这些基准测试,比较其 View 和 Compose 实现。
这些基准测试表明,Compose 1.9 及更高版本在滚动时的卡顿性能与 View 相当。
如需了解其他指标和我们的方法,请参阅主打基准。
主要概念
以下是 Compose 中与性能相关的一些关键概念:
- 阶段:了解组合、布局和绘制阶段对于优化 Compose 更新界面的方式至关重要。
- 基准配置文件:这些配置文件会预编译重要代码,从而加快应用启动速度并实现更流畅的互动。
- 稳定性:了解 Compose 如何在重组期间比较参数,以便您跳过不必要的工作,而无需引入开销高昂的相等性检查。
正确配置您的应用
如果您的应用性能不佳,则可能意味着存在配置问题。建议首先检查以下配置选项:
- 在发布模式下使用 R8 进行构建:尝试在发布模式下运行应用。调试模式有助于发现许多问题,但会产生性能开销,并且可能会使其他问题难以发现。您还应使用 R8 编译器启用优化和缩减,以确保发布 build 具有良好的性能和效率。
- 使用基准配置文件:基准配置文件通过为关键用户历程预编译代码来提升性能。Compose 包含默认配置文件,但理想情况下,您还应创建应用专用配置文件。在常规 Android 性能文档中详细了解基准配置文件
工具
熟悉可帮助您衡量和分析 Compose 应用性能的一系列工具。
最佳做法
使用 Compose 开发应用时,请牢记以下最佳实践:
- 避免开销高昂的计算:使用
remember缓存开销高昂的计算结果。 - 帮助延迟布局:为延迟布局提供稳定的
key和contentType参数,以最大限度地减少不必要的重组并实现槽重用。 - 限制不必要的重组:在读取快速变化的状态时,使用
computedStateOf(在 Compose 1.13 及更高版本中)或derivedStateOf限制重组。 - 延后状态读取:通过将状态读取封装在 lambda 函数中,尽可能延后状态读取。
- 使用 lambda 修饰符来更改状态:对于频繁更改的状态变量,请使用基于 lambda 的修饰符,例如
Modifier.offset { ... }。 - 避免向后写入:切勿写入已在可组合项中读取的状态。
如需了解详情,请参阅最佳实践指南。
观看次数
如果您使用的是视图而非 Compose,请参阅专门的提升布局性能指南。