Skip to content
阅读进度

如何理解measure、layout、draw 与优化? ​

返回 View 与显示链路 目录

标准回答 ​

measure决定尺寸,layout放置位置,draw描述或执行绘制。在硬件加速View路径中,主线程会记录绘制操作供后续渲染使用,不能把draw回调返回理解为GPU已经完成。

优化先看实际耗时和次数:减少无必要的层级与重复测量,避免在循环里多次触发布局,保持自定义View测量稳定,把昂贵资源准备移出onDraw。不要为了层级更浅而引入更复杂约束,仍需实测。

动画若只改translation、alpha等属性,通常可减少布局工作;每帧修改布局参数可能触发重新遍历,但最终收益受内容、失效和合成代价影响。

追问与回答 ​

requestLayout 和 invalidate 有何区别 ​

前者请求重新布局,可能引发测量;后者标记绘制内容需要更新。两者可以互相伴随,但语义不同,不能用invalidate代替需要重新计算几何的更新。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。