Android 性能优化 之 插桩日志分析
目录
- 为了更加精确的追踪方法调用,优化性能,可以通过 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 性能优化 之 插桩日志分析相关推荐
- Android性能优化之App应用启动分析与优化
前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动 当启动应用时,后台没 ...
- 抖音 Android 性能优化:新一代全能型性能分析工具 Rhea!
本文选自「抖音 Android 性能优化」系列文章. 「抖音 Android 性能优化」系列文章是由抖音 Android 基础技术部门技术专家倾力打造的技术干货内容,和大家分享基础技术团队在打造极致用 ...
- 抖音 Android 性能优化系列:新一代全能型性能分析工具 Rhea
本文选自「抖音 Android 性能优化」系列文章. 「抖音 Android 性能优化」系列文章是由抖音 Android 基础技术部门技术专家倾力打造的技术干货内容,和大家分享基础技术团队在打造极致用 ...
- Android 性能优化 之初识Java内存区域
前言 不管是日常开发,还是面试,我们都会和内存打交道,因为内存是支持软件运行的基本硬件环境.了解Android 内存管理,就有必要了解Java GC机制,必须要理解JVM 内存区域,这里我们主 ...
- Android性能优化——腾讯、字节、阿里、百度、网易等互联网公司项目实战+案例分析(附PDF)
前言 当我们还在用按键.滑盖.翻盖手机的时候,全触屏手机来了; 当我们觉得二维码这项发明没有意义的时候,支付宝和微信等狠狠地给了我们响亮的耳光; 当我们以为扫码支付只有支付宝的时候,微信支付来了; 当 ...
- 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )
文章目录 一. GPU 过度绘制优化总结 二. CPU 渲染过程 三. CPU 渲染性能调试工具 Layout Inspector 四. Layout Inspector 组件树 DecorView ...
- 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★
文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...
- 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )
文章目录 一. Launcher 应用 startActivitySafely 方法分析 二. Launcher 中的 startActivity(View v, Intent intent, Obj ...
- android布局时长分析,Android性能优化:布局优化 详细解析(含、、讲解 )
前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的布局优化,希望你们会喜欢. 目录 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. ...
最新文章
- 几条跟堆栈扯上关系的汇编指令
- 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
- tornado上传图片
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - B. 星系炸弹
- 前端学习(2345):uniapp学习
- 16.通过实现“函数一个返回值出口,返回两个返回值”。来了解指针与普通地址的区别...
- Apollo 对表名区分大小写 如何配置MYSQL不区分大小写呢
- 调整Linux磁盘分区大小
- error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“:解决方案
- 查看工作日志Linux,工作日志,Linux的表现还是不错的
- 动态规划之编辑距离问题
- Excel如何从身份证号码中提取性别
- h5前端兼容性问题及解决方法集合
- 服务器系统开启telnet,Telnet怎么打开 Win7/Win8系统开启Telnet服务方法图解
- 计算机之父童年的故事简介,“计算机之父”童年的故事
- HashMap的put过程
- So easy 将程序部署到服务器
- 【Pygame基本使用】
- 【特征选择】基于亨利气体溶解度优化算法求解二进制特征选择问题(HGSO)含Matlab源码
- 主动提交sitemap让谷歌、雅虎、MSN统统收录你的网站、博客
热门文章
- 决策树可视化(sklearn、graphviz)——python数据分析与挖掘实战 5-2 决策树预测销售量高低
- 深度增强学习DDPG(Deep Deterministic Policy Gradient)算法源码走读
- 【如何正确处理工作中的错误?】
- 佛系旅行青蛙——随遇而安的透明缓存
- 微信小程序对接蓝牙设备连接
- hdoj 1465 不容易系列之一
- “鸡”和“猪”的故事
- 【python日常学习】爬取4K桌面壁纸
- matlab制作有趣动画制作,18个超有趣的SVG绘制动画赏析
- AutoCAD Electrical 2022—连接器