文章目录
1.traceview的用途
traceview是Android sdk中的一个工具,用于分析计算性能,跟踪方法耗时导致的卡顿问题。它将traceview文件转为图形,直观的反应出代码的执行时间、执行次数,便于我们分析。
2.生成trace文件的三种方式
trace文件是log文件的一种,可以通过代码,也可以使用Android studio生成。
(1)代码生成
//开始 trace,保存文件到 "/sdcard/homeFragment.trace" //高版本手机保存到"/sdcard/Android/data/packageName/files/homeFragment.trace" Debug.startMethodTracing("homeFragment"); // ... Debug.stopMethodTracing(); //结束
(2)使用android studio生成
(3)DDMS生成
3.使用traceview打开trace文件
新版Android stuido 中已移除了DDMS,这里我们使用traceview工具来查看trace文件信息。
工具目录:androidsdk/tools/traceview.bat
提示报错:
SWT folder '' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
虽然提示deprecated,还是可以打开traceview。
4.分析trace文件
- 上半部分展示了线程:
- 不同颜色表示不同方法,颜色约长,执行时间越久。
- 下半部分展示了方法的执行时间:
- cpu time/call:该方法占用cpu的时间
- Calls + Recur Calls/Total :调用、递归次数
- Incl Cpu Time vs Excl Cpu Time:某方法占用的cpu时间,incl包含内部调用其他方法的时间,excl不包含
2.定位问题
- 查看耗时的方法:点击 cpu time/call ,按照时间倒序
- 查看方法执行次数:点击 Calls + Recur Calls/Total,按照次数倒序
排序后逐个排查项目代码,进一步定位问题
- 哪些方法耗时

结果:initView方法执行耗时,并将children方法列举出来,我们可以逐步排查优化 - 哪些方法执行次数过多:

结果:shareUtilUser.getString方法高频执行,查看parents,发现是登录信息,频繁操作导致。跟踪代码,发现每次获取登录的某个信息,会将所有登录相关的数据,都取出来了,因此这里就是我们需要优化的地方了。
PS:附上 traceview下载地址
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212339.html原文链接:https://javaforall.net
