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