江三沐洛的博客

江三沐洛的博客

TraceView的使用

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

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

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

@Override
protected void onResume() {
     Debug.startMethodTracing();
     super.onResume();
}

@Override
protected 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进行对比,如果两者的值接近,则说明时间都花在执行任务上了,那说明我们需要优化的是方法本身的逻辑;如果两者相差较大,则说明时间都花费在等待上了,我们需要思考的就是方法在等待什么,是不是同步锁的问题什么的

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xw13782513621/article/details/77995915
个人分类: 安卓优化
上一篇LeakCanary的使用
下一篇安卓7.0 系统服务启动流程
想对作者说点什么? 我来说一句

TraceView使用技巧.

2018年04月08日 232KB 下载

没有更多推荐了,返回首页

关闭
关闭