TraceView的使用
TraceView是什么
Traceview 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot
(瓶颈)。Traceview 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用
DDMS 工具。
debug类和ddms的采集方法
debug采集方法
我们先在一些关键的代码前面调用
Debug类的startMethodTracing方法
然后在结束前调用
stopMethodTracing
这两个方法就采集了这段采集时间 这个应用所有线程(java线程)的函数执行情况
然后保存到/mnt/sdcard下的一个文件夹下,
然后我们用TraceView工具类分析这些数据
ddms采集方法
我们点ddms窗口,点左边Devices窗口,我们可以看到一排功能 STOP红色按钮的左边
有两个按钮 都是3个带圆圈的箭头
右边的还多一个红色的圆圈
左边的按钮是update Threads
右边的按钮是 start method profiling 这个就是我们要的按钮了
可以控制开始和停止采集数据
停止采集数据后ddms会自动触发TraceView工具
TraceView的使用
我们来一个实验,
第一是熟悉TraceView的使用,
第二是我们看看实验结果看看哪个操作最耗时间
我们来个最简单的工程,来4个button
每个button都执行最简单的操作
第一个,就是循环输出
public void method1(View view) {
int result = jisuan();
System.out.println(result);
}
private int jisuan() {
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
return 1;
}
第二个,就是主线程睡个2秒
public void method2(View view) {
SystemClock.sleep(2000);
}
第三个,循环累加一下
public void method3(View view) {
int sum = 0;
for (int i = 0; i < 1000; i++) {
sum += i;
}
System.out.println("sum=" + sum);
}
第四个,来个Toast
public void method4(View view) {
Toast.makeText(this, "" + new Date(), 0).show();
}
实验过程
我们先点击ddms的Start Method Profiling按钮,就是刚刚说的那个
这样就开始采集数据了
然后我们点击4个button,这样就依次执行了这4个操作
然后我们再点按钮,停止采集数据
刚刚说了,停止后会自动触发
这时候就弹出一个图表,
这个图表分为2个部分,
上面的部分是好多个行,每一行就是一个线程,我们只要看主线程就行了,点一下主线程
下面是每个方法消耗的时间
我们点击线程之后看下面的界面
我们看最前面的两个参数
Incl Cpu Time 就是占用cpu的时间
第一个参数是占用时间的百分比
第二个参数就是Incl Cpu Time 占用的时间
我们点击Incl Cpu Time,让最多的排前面
我们就发现我们的Method1排在第七位,前面是很多我们系统的方法
OK,我们现在就发现了Method1是4个方法中最耗时的,用了2338毫秒
想不到这么慢,我还以为Method2要2秒是最慢的