当前位置: 首页 > news >正文

Android | 性能优化 之 TraceView工具的使用

上代码!

先加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

选择跟踪范围,在开始追踪和结束的地方:

//================在这里开始方法追踪
val externalStorageAbsPath: String =Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()
val traceFilePath = externalStorageAbsPath + File.separator + "test_.trace"
Log.i("测试文件的地址:", traceFilePath)
Debug.startMethodTracing(traceFilePath)
//================在这里开始方法追踪你的代码。。。。。。//================在这里结束方法追踪
Debug.stopMethodTracing();

找到trace文件:

进入shell模式

adb shell

然后:【ls 这个文件地址(test_.trace)】

表示有这个文件,然后退出来,用【adb pull 文件地址(test_.trace)】

然后:拿到 test_.trace 文件后,你可以使用Android Studio的Traceview工具进行分析和查看。具体步骤如下:

  1. 打开Android Studio。
  2. 点击顶部菜单的"View"选项。
  3. 在下拉菜单中选取"Tool Windows",然后点击"Profiler"选项。
  4. 在"Profiler"窗口中,你会看到你的设备以及正在上面运行的进程。选择你的应用进程。
  5. 在顶部菜单栏,点击"File",从下拉菜单中选择"Open...",然后选择你的 test_.trace 文件。

有什么用呢?

xxx.trace文件是Android系统生成的一种跟踪文件,它会记录下你的应用在一段时间内的详细运行情况,包括每个方法的调用次数、每次调用的时间和被哪个线程调用等等。这些信息可以帮助你找出应用潜在的性能问题,例如执行效率低的方法、不必要的重复调用或者可能引起界面卡顿的长时间运行操作。

有了这些信息,你就可以分析出应用的运行状况。知道哪些方法运行的时间非常长,那么可能就需要你去查看一下这个方法的实现,看看是否有可能优化以减少运行时间。或者如果某个方法被频繁调用,那么你也可以检查一下是否存在不必要的重复调用。

相关文章:

  • 基于SSM+Jsp的体育竞赛成绩管理系统
  • 45、基于深度学习的螃蟹性别分类(matlab)
  • 网络编程(TCP协议,UDP协议)
  • tron-passwd写入提权
  • 音视频开发—FFmpeg 打开摄像头进行RTMP推流
  • SSLyze:一款快速高效的SSLTLS扫描工具
  • 2024年全球架构师峰会(ArchSummit深圳站)
  • 大型语言模型在AMD GPU上的推理优化
  • 使用阿里开源的Spring Cloud Alibaba AI开发第一个大模型应用
  • 探索Python元类的奥秘及其应用场景
  • 【Python爬虫】爬取名人名言页面并进行简单的数据清洗(入门级)
  • C# 中的隐式和显式类型转换
  • 华为HCIP Datacom H12-821 卷9
  • django学习入门系列之第三点《CSS基础样式介绍2》
  • select实现超时保护机制
  • 【Leetcode】101. 对称二叉树
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【RocksDB】TransactionDB源码分析
  • Android组件 - 收藏集 - 掘金
  • happypack两次报错的问题
  • JavaScript DOM 10 - 滚动
  • passportjs 源码分析
  • REST架构的思考
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 从零搭建Koa2 Server
  • 力扣(LeetCode)965
  • 前端面试总结(at, md)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 一个JAVA程序员成长之路分享
  • 2017年360最后一道编程题
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $nextTick的使用场景介绍
  • (04)odoo视图操作
  • (33)STM32——485实验笔记
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (undone) MIT6.824 Lecture1 笔记
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .Net MVC + EF搭建学生管理系统
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • /boot 内存空间不够
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • [BZOJ1053][HAOI2007]反素数ant
  • [bzoj2957]楼房重建
  • [C#基础]说说lock到底锁谁?
  • [C\C++]读入优化【技巧】