外观
如何理解measure、layout、draw 与优化?
标准回答
measure决定尺寸,layout放置位置,draw描述或执行绘制。在硬件加速View路径中,主线程会记录绘制操作供后续渲染使用,不能把draw回调返回理解为GPU已经完成。
优化先看实际耗时和次数:减少无必要的层级与重复测量,避免在循环里多次触发布局,保持自定义View测量稳定,把昂贵资源准备移出onDraw。不要为了层级更浅而引入更复杂约束,仍需实测。
动画若只改translation、alpha等属性,通常可减少布局工作;每帧修改布局参数可能触发重新遍历,但最终收益受内容、失效和合成代价影响。
追问与回答
requestLayout 和 invalidate 有何区别
前者请求重新布局,可能引发测量;后者标记绘制内容需要更新。两者可以互相伴随,但语义不同,不能用invalidate代替需要重新计算几何的更新。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q037