TraceView的使用

来源:互联网 发布:开淘宝店运费怎么办 编辑:程序博客网 时间:2024/06/05 07:03

Traceview是android平台配备的一个性能分析工具,通过图形化的方式让我们了解程序的性能,并且能具体到method。
使用方法有两种:
1:在代码中追踪

//追踪开始Debug.startMethodTracing();//追踪开始Debug.stopMethodTracing();

在你想开始监听的时候调用Debug.startMethodTracing();结束的时候调用Debug.stopMethodTracing();
比如说想监听在Activity活动的时候都有哪些方法运行,各自花费了多久时间,则可以再onResume中调用start,在onPause中调用stop

@Overrideprotected void onResume() {     Debug.startMethodTracing();     super.onResume();}@Overrideprotected void onPause() {     Debug.stopMethodTracing();     super.onPause();}

运行完毕后会在sdcard目录下生成dmtrace.trace文件
2:在DDMS中追踪
首先是开始的时候选中想要追踪的应用,点击上面的Start Method Profiling按钮
这里写图片描述

接着选择Trace based profiling,点击OK

这里写图片描述

现在就开始追踪了,如果追踪完毕的话,就点击第一步时的按钮,现在是Stop Method Profiling

这里写图片描述

之后生成的trace文件会在ddms中自动打开

这里写图片描述

上面显示的就是在追踪的这一段时间内方法的调用情况

其中各个参数的含义分别是:

这里写图片描述

当程序出现卡顿现象的时候,我们就可以通过TraceView来分析到底是哪个方法占用了时间
程序出现卡顿一般分为两个情况
一种是存在单次调用花费时间不长,但是会频繁调用的方法
一种是存在调用次数不多,但是每次调用却需要花费很长时间的方法
通过查看trace文件中各个方法的Calls+RecurCalls/Total这一列,我们可以了解到这一段时间内方法的调用次数,以此来判断第一种情况。
第二种情况我们则需要通过Cpu Time/Call和Real Time/Call这几列来进行判断
Real Time/Call可以判断单次方法在实际中的执行时间,如果执行时间较长,我们还可以通过和Cpu Time/Call进行对比,如果两者的值接近,则说明时间都花在执行任务上了,那说明我们需要优化的是方法本身的逻辑;如果两者相差较大,则说明时间都花费在等待上了,我们需要思考的就是方法在等待什么,是不是同步锁的问题什么的

原创粉丝点击