目录

  • 为了更加精确的追踪方法调用,优化性能,可以通过 Debug 类生成插桩日志,在 Profiler 面板中导入后进行分析。
  • 一、生成插桩日志
    • 1. 工具类封装
    • 2. 示例中调用
    • 3. 模拟耗时
  • 二. 导出日志,分析数据
    • 1. 在 Device File Explorer 面板中找到自己的应用目录下的 xxx.trace 文件,右键 Save as 保存到自己指定的目录中,比如桌面
    • 2. 然后打开 Profiler 面板,点击 “+” 号,选择 “Load from file...”,将上述文件导入,完成后就可以进行日志分析了
    • 3. 导入成功后图例
    • 4. 分析数据
    • 以上只是一个简单的示例。在实际复杂场景中,我们可以在需要的地方加入插桩日志,这样就能更方便直观的分析性能,从而改善应用体验。
  • 附 Github 源码

为了更加精确的追踪方法调用,优化性能,可以通过 Debug 类生成插桩日志,在 Profiler 面板中导入后进行分析。

一、生成插桩日志

1. 工具类封装


/*** 在需要开始跟踪的地方调用如下代码,将生成的文件保存在指定目录中* @param context 使用指定的上下文生成跟踪文件目录和名称*/
fun startTrack(context: Context) {val name = context.javaClass.simpleNameval path: String = context.filesDir.path + "/track-${System.currentTimeMillis()}-$name.trace""path====> $path".logD()Debug.startMethodTracing(path)
}/*** 结束跟踪*/
fun stopTrack() {Debug.stopMethodTracing()
}

2. 示例中调用


/** 点击界面上的一个按钮,开始追踪 */
viewBinding.button.setOnClickListener {startTrack(this)viewModel.sleepOnMainThread()stopTrack()
}

3. 模拟耗时


/** 在主线程睡眠2秒,模拟耗时操作 */
fun sleepOnMainThread() {kotlin.runCatching {Thread.sleep(2000)}
}

二. 导出日志,分析数据

1. 在 Device File Explorer 面板中找到自己的应用目录下的 xxx.trace 文件,右键 Save as 保存到自己指定的目录中,比如桌面


// 例如我在示例中生成的文件路径
/data/data/com.william.easykt/files/track-1661176701787-ProfilerActivity.trace

导出操作如下图:

2. 然后打开 Profiler 面板,点击 “+” 号,选择 “Load from file…”,将上述文件导入,完成后就可以进行日志分析了

3. 导入成功后图例

  • 左边红框中截选了主线程 main 中的方法调用轨迹图
  • 右边红框对应的是主线程 main 中的方法调用明细数据

4. 分析数据

  • 从下图中,可以看到方法调用的执行轨迹,从上到下,分发事件,响应按钮点击,最后执行 ProfilerViewModel 的 sleepOnMainThread() 方法,可以看到右边的时间明细为2s。

  • 现在我们按照如下修改,将模拟的耗时操作放在子线程中,重新 run 生成日志

fun sleepOnWorkThread() {thread {kotlin.runCatching {Thread.sleep(2000)}}
}
  • 通过重新生成的日志数据,可以观察到点击操作的耗时缩短到了 2.23ms

以上只是一个简单的示例。在实际复杂场景中,我们可以在需要的地方加入插桩日志,这样就能更方便直观的分析性能,从而改善应用体验。

附 Github 源码

DebugUtil.kt

ProfilerActivity.kt

Android 性能优化 之 插桩日志分析相关推荐

  1. Android性能优化之App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动      当启动应用时,后台没 ...

  2. 抖音 Android 性能优化:新一代全能型性能分析工具 Rhea!

    本文选自「抖音 Android 性能优化」系列文章. 「抖音 Android 性能优化」系列文章是由抖音 Android 基础技术部门技术专家倾力打造的技术干货内容,和大家分享基础技术团队在打造极致用 ...

  3. 抖音 Android 性能优化系列:新一代全能型性能分析工具 Rhea

    本文选自「抖音 Android 性能优化」系列文章. 「抖音 Android 性能优化」系列文章是由抖音 Android 基础技术部门技术专家倾力打造的技术干货内容,和大家分享基础技术团队在打造极致用 ...

  4. Android 性能优化 之初识Java内存区域

    前言     不管是日常开发,还是面试,我们都会和内存打交道,因为内存是支持软件运行的基本硬件环境.了解Android 内存管理,就有必要了解Java GC机制,必须要理解JVM 内存区域,这里我们主 ...

  5. Android性能优化——腾讯、字节、阿里、百度、网易等互联网公司项目实战+案例分析(附PDF)

    前言 当我们还在用按键.滑盖.翻盖手机的时候,全触屏手机来了; 当我们觉得二维码这项发明没有意义的时候,支付宝和微信等狠狠地给了我们响亮的耳光; 当我们以为扫码支付只有支付宝的时候,微信支付来了; 当 ...

  6. 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )

    文章目录 一. GPU 过度绘制优化总结 二. CPU 渲染过程 三. CPU 渲染性能调试工具 Layout Inspector 四. Layout Inspector 组件树 DecorView ...

  7. 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★

    文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...

  8. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )

    文章目录 一. Launcher 应用 startActivitySafely 方法分析 二. Launcher 中的 startActivity(View v, Intent intent, Obj ...

  9. android布局时长分析,Android性能优化:布局优化 详细解析(含、、讲解 )

    前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的布局优化,希望你们会喜欢. 目录 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. ...

最新文章

  1. 几条跟堆栈扯上关系的汇编指令
  2. 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
  3. tornado上传图片
  4. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - B. 星系炸弹
  5. 前端学习(2345):uniapp学习
  6. 16.通过实现“函数一个返回值出口,返回两个返回值”。来了解指针与普通地址的区别...
  7. Apollo 对表名区分大小写 如何配置MYSQL不区分大小写呢
  8. 调整Linux磁盘分区大小
  9. error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“:解决方案
  10. 查看工作日志Linux,工作日志,Linux的表现还是不错的
  11. 动态规划之编辑距离问题
  12. Excel如何从身份证号码中提取性别
  13. h5前端兼容性问题及解决方法集合
  14. 服务器系统开启telnet,Telnet怎么打开 Win7/Win8系统开启Telnet服务方法图解
  15. 计算机之父童年的故事简介,“计算机之父”童年的故事
  16. HashMap的put过程
  17. So easy 将程序部署到服务器
  18. 【Pygame基本使用】
  19. 【特征选择】基于亨利气体溶解度优化算法求解二进制特征选择问题(HGSO)含Matlab源码
  20. 主动提交sitemap让谷歌、雅虎、MSN统统收录你的网站、博客

热门文章

  1. 决策树可视化(sklearn、graphviz)——python数据分析与挖掘实战 5-2 决策树预测销售量高低
  2. 深度增强学习DDPG(Deep Deterministic Policy Gradient)算法源码走读
  3. 【如何正确处理工作中的错误?】
  4. 佛系旅行青蛙——随遇而安的透明缓存
  5. 微信小程序对接蓝牙设备连接
  6. hdoj 1465 不容易系列之一
  7. “鸡”和“猪”的故事
  8. 【python日常学习】爬取4K桌面壁纸
  9. matlab制作有趣动画制作,18个超有趣的SVG绘制动画赏析
  10. AutoCAD Electrical 2022—连接器