TraceView
Systrace
这里我们来讲解后面三种分析工具。
1、卡顿检测工具Profile GPU Rendering
它是Android手机上自带的一个辅助工具,打开Profile GPU Rendering后可以看到实时刷新的彩色图,其中每一根竖线表示一帧,由多个颜色组成。
Android M之前
在Android M版本之前,每一条柱状图都由红、黄、蓝、紫组成,分别对应每一帧在不同阶段的实际耗时不同颜色的解释如下:
蓝色:表示测量绘制的时间,需要多长时间去创建和更新DisplayList。在蓝色的线很高时,有可能是因为需要重新绘制,或者自定义视图的onDraw函数处理事情太多。
红色:表示Android进行2D渲染Display List的执行的时间。当红色的线非常高时,可能是由于重新提交了视图导致的。
橙色:处理时间或CPU告诉GPU渲染一帧的地方,如果柱状图很高,就意味着GPU太繁忙了。
紫色:将资源转移到渲染线程的时间。(4.0版本以上提供)
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..
复制代码
2、TraceView
它主要用来分析函数的调用过程,可以对Android的应用程序以及Framework层代码进行性能分析。
使用TraceView查看耗时,主要关注Calls + Recur Calls / Total和(该方法调用次数+递归次数)和Cpu Time / Call(该方法耗时)这两个值,然后优化这些方法的逻辑和调用次数,减少耗时。
注意
RealTime(