外观
VSync Choreographer 和 doFrame 是什么关系?
标准回答
VSync 提供与显示节奏相关的时序信号。应用有动画、绘制或帧回调工作时,Choreographer 请求相应帧调度,收到事件后在所属 Looper 线程执行 doFrame,依次处理输入、动画、布局绘制和提交阶段;部分版本还有 Insets 动画等阶段。它让多种 UI 工作围绕同一帧时间协作。屏幕刷新不代表静态应用每次都执行完整的 doFrame,也不代表每次都会生成新缓冲区。60Hz 的帧周期约为 16.67ms,120Hz 约为 8.33ms,实际期限还要结合流水线和调度偏移。
延伸追问
主线程已有长任务时,VSync 到达也不能抢占正在执行的 Java 代码,帧回调会延后。
内容来源
- Android Framework 知识手册 · 原条目
2-10