traceview使用总结

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();    //结束

导出trace文件到电脑:
adb pull /sdcard/homeFragment.trace C:\Users\Admin\Desktop

若提示No such file,可能保存到sdcard/android 目录下了:
adb pull /sdcard/Android/data/packageName/files/homeFragment.trace C:\Users\Admin\Desktop
packageName是应用的具体包名

(2)使用android studio生成

profile/cpu 下选择记录traceview
cpu/traceview

android studio对trace也做了可视化:包括各方法的执行时间和占比

(3)DDMS生成

DDSM 全称 Dalvik Debug Monitor Server,是老版adt的调试工具。可生成trace后,查看。
在这里插入图片描述

3.使用traceview打开trace文件

新版Android stuido 中已移除了DDMS,这里我们使用traceview工具来查看trace文件信息。

工具目录:androidsdk/tools/traceview.bat

But,打开该目录后发现,新版sdk中已缺失traceview,我们可以下载一个traceview.bat文件放在该目录下,命令行打开:
traceview C:\Users\Admin\Desktop\homeFragment.trace

提示报错:

SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.

这是依赖库缺失,下载一个老版的sdk/tools/lib,将它放到tools目录下(合并lib)即可。
在这里插入图片描述

虽然提示deprecated,还是可以打开traceview。

4.分析trace文件

1.打开如下:
在这里插入图片描述

  • 上半部分展示了线程:
    • 不同颜色表示不同方法,颜色约长,执行时间越久。
  • 下半部分展示了方法的执行时间:
    • 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,按照次数倒序

排序后逐个排查项目代码,进一步定位问题

3.案例
项目在每次启动主页时,耗时在1.5-2.5s,优化性能时,我们需要具体查看:

  • 哪些方法耗时
    在这里插入图片描述
    结果:initView方法执行耗时,并将children方法列举出来,我们可以逐步排查优化

  • 哪些方法执行次数过多:
    在这里插入图片描述

结果:shareUtilUser.getString方法高频执行,查看parents,发现是登录信息,频繁操作导致。跟踪代码,发现每次获取登录的某个信息,会将所有登录相关的数据,都取出来了,因此这里就是我们需要优化的地方了。

PS:附上 traceview下载地址

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值