traceview使用总结

traceview使用总结文章目录1.traceview的用途2.生成trace文件的三种方式(1)代码生成(2)使用androidstudio生成(3)DDMS生成3.使用traceview打开trace文件4.分析trace文件1.traceview的用途traceview是Androidsdk中的一个工具,用于分析计算性能,跟踪方法耗时导致的卡顿问题。它将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也做了可视化:包括各方法的执行时间和占比
traceview使用总结

(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下载地址

今天的文章traceview使用总结分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/8291.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注