外观
硬件加速下主线程 RenderThread 和 GPU 分别做什么?
标准回答
主线程处理输入、动画属性、测量布局以及 View 的绘制记录更新。HWUI 用 RenderNode 等对象描述绘制内容和属性,RenderThread 接收同步后的场景,执行渲染相关工作并向 GPU 提交命令。GPU 完成实际绘制后,产出缓冲区供后续合成。主线程仍可能因布局、记录更新、同步和其他任务过慢导致错过帧期限;RenderThread 和 GPU 也可能各自成为瓶颈。因此硬件加速不能理解成 UI 工作全部移到了后台线程。
延伸追问
部分 RenderThread 动画在主线程短时阻塞时仍可继续,但不能由此保证所有 View 动画或所有窗口转场持续流畅。
内容来源
- Android Framework 知识手册 · 原条目
2-7