Skip to content
阅读进度

VSync 不停发生 应用为什么不会一直 doFrame? ​

返回 View 与显示链路 目录

标准回答 ​

显示系统有自己的刷新节奏,应用则在存在待处理帧工作时通过 Choreographer 等机制申请帧调度。典型 doFrame 在主线程处理输入相关回调、动画、遍历等工作;静止且没有待处理帧任务时,不需要每个刷新周期都执行一次完整绘制。

机制解释 ​

60Hz、90Hz、120Hz 的周期约为 16.67ms、11.11ms、8.33ms,但具体帧截止时间还要结合流水线和系统调度分析。doFrame 结束不是像素已经出现在屏幕上,之后还涉及 RenderThread、GPU、合成和呈现。(FrameTimeline 与卡顿分析)

延伸追问 ​

主线程空闲就一定不卡吗?不一定,还可能是 RenderThread、GPU、SurfaceFlinger 或调度链路问题。定位时关联 FrameTimeline 与实际线程活动,不能只盯一个 doFrame 耗时。

内容来源 ​

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