外观
Compose 如何通过重组(Recomposition)机制实现高效 UI 更新?
标准回答
Compose 把界面写成状态的结果;读到的状态变化后,相关界面函数会重新执行。
- 被读取的状态发生变化会使相关作用域失效。
- 满足条件的稳定输入可帮助跳过不必要执行。
- 状态读取位置、稳定性和副作用写法都会影响开销。
通俗例子
点赞数从 9 变成 10,显示点赞数的部分需要更新,不等于整屏每个控件都必须重新绘制。
深入解释
**重组重新执行什么:**某段可组合代码读取的状态改变后,Compose 会安排相关计算重新执行,更新需要的界面描述;符合条件的部分可被跳过。
**它与绘制有什么区别:**重组处理“界面应该是什么”,布局决定尺寸位置,绘制生成显示内容。一次状态变化不一定让三个阶段都完整执行,不能把重组次数直接当成掉帧次数。
易混淆点
重组不等于整个屏幕重绘;也不意味着所有被调用函数都只执行一次。
内容来源
- Android · AI Agent 知识手册 · 原条目
2.3.1