View的测量、布局、绘制是Android渲染系统工作的核心流程,也是应用卡顿优化的理论基础。这个过程始于
ViewRootImpl的performTraversals()方法,它像一个总指挥,依次调度Measure、Layout和Draw三大阶段。我将从触发源头开始,详细阐述每个阶段的完整细节。”
总览:performTraversals() - 流程的发动机
一切的起点都在ViewRootImpl的performTraversals()方法中。这个方法会根据窗口状态、布局参数、动画等条件,决定是否需要重新执行三大流程。
java
// 概念性代码
private void performTraversals() {
// ...
// 1. 测量阶段
performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
// ...
// 2. 布局阶段
performLayout(lp, mWidth, mHeight);
// ...
// 3. 绘制阶段
performDraw();
}
下图清晰地展示了从ViewRootImpl开始,这三大流程的完整工作流程与协作关系:

第一阶段:测量(Measure) - 确定大小
核心问题:每个View的宽高是多少?

最低0.47元/天 解锁文章
2721

被折叠的 条评论
为什么被折叠?



