Android Performance Patterns S01E01 - Rendering performance
S01E01 Rendering performance 101 渲染性能问题
渲染性能问题是app开发的最常见问题。
系统每隔大约16ms(1/60秒)尝试绘制Activity,如果无法每隔16ms成功绘制出新的图,则会出现掉帧的现象。也就是说,APP每16ms要运行结束所有刷新屏幕的逻辑,屏幕才能达到每秒60帧。
如下图:
用户很容易察觉掉帧引起的卡顿问题,如拖动列表卡顿、输入法输入卡顿。引起卡顿的原因可能有多种,如:
- View结构的较大部分的重新绘制花费过多时间(CPU周期,CPU cycles)。
- 太多的组件互相覆盖,在用户不可见的范围浪费了过多时间。
- 过多的动画,导致CPU和GPU组件的过度使用。
检查和修复这些性能问题,与APP如何构建的有关。不过有些通用的辅助工具以定位这些性能问题:
Hierarchy Viewer:可检测Activity是否过于复杂等。
On-Device Tools:Profile GPU Rendering, Show GPU Overdraw, GPU View Update等。
Traceview:隐藏在CPU代码中的bug