Android M及之后
并且,从Android M开始变成了渲染八步骤:
1、橙色-Swap Buffers
表示GPU处理任务的时间。
2、红色-Command Issue
进行2D渲染显示列表的时间,越高表示需要绘制的视图越多。
3、浅蓝-Sync&Upload
准备有待绘制的图片所耗费的时间,越高表示图片数量越多或图片越大。
4、深蓝-Draw
测量和绘制视图所需的时间,越高表示视图越多或onDraw方法有耗时操作。
5、一级绿-Measure/Layout
onMeasure与onLayout所花费的时间。
6、二级绿-Animation
执行动画所需要花费的时间。越高表示使用了非官方动画工具或执行中有读写操作。
7、三级绿-Input Handling
系统处理输入事件所耗费的时间。
8、四级绿-Misc Time/Vsync Delay
主线程执行了太多任务,导致UI渲染跟不上vSync的信号而出现掉帧。
此外,可通过如下 adb命令将具体的渲染耗时输出到日志中来分析:
adb shell dumpsys gfxinfo com..
复制代码
它主要用来分析函数的调用过程,可以对Android的应用程序以及Framework层代码进行性能分析。
使用TraceView查看耗时,主要关注Calls + Recur Calls / Total和(该方法调用次数+递归次数)和Cpu Time / Call(该方法耗时)这两个值,然后优化这些方法的逻辑和调用次数,减少耗时。
注意
RealTime(实际时长)的实际执行时间要比CPU Time要长,因为它包括了CPU的上下文切换、阻塞、GC等时间消耗。
Systrace是Android 4.1及以上版本提供的性能数据采样和分析工具,它的主要作用可以归结为如下两点:
-
1、收集Android关键子系统(如surfaceflinger、WindowManagerService等Framework部分关键模块、服务、View系统等)的运行信息,这样可以更直观地分析系统瓶颈,改进性能。
-
2、跟踪系统的I/0操作、内核工作队列、CPU负载等,在UI显示性能分析上提供很好的数据,特别是在动画播放不流畅、渲染卡顿等问题上。