一分钟快速定位Android启动耗时问题
前言
tencent matrix默认无法监测application冷启动的耗时方法,本文介绍了如何改造matrix支持冷启动耗时方法监测。让你一分钟就能给app启动卡顿号脉。
1. 接入tencent matrix
1.1 在你项目根目录下的 gradle.properties 中配置要依赖的 matrix 版本号,如:
matrix_version=1.0.0
1.2 在你项目根目录下的 build.gradle 文件添加 matrix 依赖,如:
1.3 在 app/build.gradle 文件中添加 matrix 各模块的依赖,如:
1.4 实现 pluginlistener,接收 matrix 处理后的数据, 如:
1.5 实现动态配置接口, 可修改 matrix 内部参数. 在 sample-android 中 我们有个简单的动态接口实例dynamicconfigimpldemo.java, 其中参数对应的 key 位于文件 matrixenum中, 摘抄部分示例如下:
1.6 选择程序启动的位置对 matrix 进行初始化,如在 application 的继承类中, init 核心逻辑如下:
2. 改造application子类
2.1 模拟application卡顿
2.2 application.oncreate()调用卡顿方法
2.3 反射获取activitythread的mhandler
2.4 将原来的oncreate的方法调用转入匿名内部类调用
2.5 重写application oncreate方法
3.运行,快速定位
3.1 关键字"trace_evilmethod"查找日志
tag[trace_evilmethod]type[0];key[null];content[{"machine":"middle","cpu_app":0,"mem":3822452736,"mem_free":1164132,"detail":"normal","cost":1344,"usage":"0.37%","scene":"default","stack":"0,1048574,1,1344\n1,5471,1,1338\n2,17582,1,1338\n3,17558,1,1338\n4,17560,1,379\n5,17562,1,160\n6,17563,1,17\n6,17566,1,20\n6,17568,1,20\n5,17569,1,20\n4,17573,1,56\n5,17575,1,21\n5,17576,1,5\n5,17578,1,10\n4,17580,1,102\n","stackkey":"17558|","tag":"trace_evilmethod","process":"com.peter.viewgrouptutorial","time":1624837969986}]
3.2 解析日志 打印卡顿堆栈
android.os.handler dispatchmessage 1344
.com.peter.viewgrouptutorial.myapp$applicationtask run 1338
..com.peter.viewgrouptutorial.myapp access$a 1338
...com.peter.viewgrouptutorial.myapp a 1338
....com.peter.viewgrouptutorial.myapp b 379
.....com.peter.viewgrouptutorial.myapp c 160
......com.peter.viewgrouptutorial.myapp d 17
......com.peter.viewgrouptutorial.myapp e 20
......com.peter.viewgrouptutorial.myapp f 20
.....com.peter.viewgrouptutorial.myapp g 20
....com.peter.viewgrouptutorial.myapp h 56
.....com.peter.viewgrouptutorial.myapp i 21
.....com.peter.viewgrouptutorial.myapp j 5
.....com.peter.viewgrouptutorial.myapp k 10
....com.peter.viewgrouptutorial.myapp l 102
总结
到此这篇关于快速定位android启动耗时问题的文章就介绍到这了,更多相关定位android启动耗时内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!