TraceView主要的功能就是检测你的应用在运行过程中各个线程的CPU占用情况,依据此可以找出你的应用出现卡顿的地方。
基本使用
使用TraceView主要有两种方式:
1、从Android Studio中启动Android Device Monitor: Tools -> Android -> Android Device Monitor.
(1).选择你要调试的进程。
(2).点击start mothod profiling,待图标变黑。
(3).选择sample base profiling
2、使用android.os.Debug.startMethodTracing();和android.os.Debug.stopMethodTracing();方法,当运行了这段代码的时候,就会有一个trace文件在/sdcard目录中生成,也可以调用startMethodTracing(String traceName) 设置trace文件的文件名,最后你可以使用adb pull /sdcard/test.trace /tmp 命令将trace文件复制到你的电脑中,然后用DDMS工具打开
上面部分是你测试进程的中每个线程运行的时间线,可以选择某一个线程的时间线,观察下面部分显示的对应方法的耗时情况
TraceView中的指标
纵轴
TraceView界面下方表格中纵轴就是每个方法,包括了JDK的,Android SDK的,也有native方法的
每个方法前面都有一个数字,是全部方法按照Incl CPU Time 时间的排序序
打开每个方法,数据分为两个部分
Parents
Children
Parents表示调用1这个方法的父方法。Children表示方法调用的其他方法。
横轴
Incl Cpu Time
这个方法以及这个方法的子方法一共执行的时间。
例如:
public void a() {
//代码
b();
c();
d();
//代码
}
则上面a()方法的Incl Cpu Time为b(),c(),d()以及a()方法内其他执行代码的执行总时间。
Excl Cpu Time
这个方法除去其中包含的子方法的执行时间,其他代码执行的时间。
以上面为例,Excl Cpu Time为Incl Cpu Time的时间减去b(),c(),d()的执行时间。
Incl Real Time
和Incl Cpu Time 差不多
Excl Real Time
和Excl Cpu Time差不多
Calls + Recur Calls / Total
它表示这个方法执行的次数,这个指标中有两个值,一个Call表示这个方法调用的次数,Recur Call表示递归调用次数
Cpu Time / Call
表示这个方法每调用一次需要的时间,这个地方就可以分析哪些方法存在耗时操作。
Real Time / Call
这个方法实际调用一次需要的时间。
参考文章: