GPU渲染颜色信息
4.x:
蓝色Draw | 代表绘制时间,即创建和更新display lists的时间
红色Process | 代表执行时间,即系统进行2D渲染Display List的时间
橙色Execute | 代表处理时间,即CPU等待GPU完成渲染处理的时间
5.x:
新增紫色 | 代表渲染线程写入资源所需时间
6.x:
变成9种颜色,将渲染过程中的几大步骤进一步细分,可以通过Android Studio上的GPU Monitor可以看到各颜色含义更新如下(关于GPU Monitor下一小节会具体介绍):
Swap Buffers | 对应原先Process(橙色),表示处理任务的时间,也可以说是CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多;
Command Issue | 对应原先Execute(红色),表示执行任务的时间,这部分主要是Android进行2D渲染显示列表的时间,为了将内容绘制到屏幕上,Android需要使用Open GL ES的API接口来绘制显示列表,红色线条越高表示需要绘制的视图更多;
Sync & Upload | 表示的是准备当前界面上有待绘制的图片所耗费的时间,为了减少该段区域的执行时间,我们可以减少屏幕上的图片数量或者是缩小图片的大小;
Draw | 对应原先Update(蓝色),表示测量和绘制视图列表所需要的时间,蓝色线条越高表示每一帧需要更新很多视图,或者View的onDraw方法中做了耗时操作;
Measure/Layout | 表示布局的onMeasure与onLayout所花费的时间,一旦时间过长,就需要仔细检查自己的布局是不是存在严重的性能问题;
Animation | 表示计算执行动画所需要花费的时间,包含的动画有ObjectAnimator,ViewPropertyAnimator,Transition等等。一旦这里的执行时间过长,就需要检查是不是使用了非官方的动画工具或者是检查动画执行的过程中是不是触发了读写操作等等;
Input Handling | 表示系统处理输入事件所耗费的时间,粗略等于对事件处理方法所执行的时间。一旦执行时间过长,意味着在处理用户的输入事件的地方执行了复杂的操作;
Misc Time/Vsync Delay | 表示在主线程执行了太多的任务,导致UI渲染跟不上vSync的信号而出现掉帧的情况;出现该线条的时候,可以在Log中看到这样的日志: I/Choreographer(*): Skipped XXX frames! The application may be doing too much work on its main thread
关于这一部分的具体原理及详细解释可以参考Android性能优化典范:
http://hukai.me/android-performance-patterns/
http://hukai.me/android-performance-patterns-season-5/
安卓绘图原理
http://blog.csdn.net/xiaosongluo/article/details/51212296