Skip to content
阅读进度

一个 Button 从创建到真正显示在屏幕上 完整链路是什么? ​

返回 Framework 与系统服务 目录

标准回答 ​

布局加载后,Button 被加入 Activity 的 View 树。ViewRootImpl 在需要更新时安排 traversal,由 Choreographer 在对应帧执行测量、布局和绘制。measure 决定尺寸,layout 决定位置,draw 组织绘制内容;ViewGroup 通过 dispatchDraw 绘制子 View。硬件加速下,应用主线程更新 RenderNode 等绘制记录,RenderThread 驱动渲染并生成窗口缓冲区。缓冲区经图形缓冲传递机制交给 SurfaceFlinger,SurfaceFlinger 根据图层位置和遮挡进行合成,再由 HWC 和显示设备呈现。Button 通常和其他普通 View 一起绘入窗口内容,并不独占一个 SurfaceFlinger 图层。

延伸追问 ​

onDraw 或 draw 返回只能说明应用侧相应工作完成,不能作为屏幕已经显示的证据。

内容来源 ​

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