分析Android系统app性能问题,使用Systrace文件分析找出引起系统卡顿,反应慢的原因,开机慢等问题
1、首先打开Android Device Monitor(DDMS为例),选择要你的应用进程这里如com.android.gallery3d
2、点击capture system wide trace using android systrace
3、点击后会弹出trace配置框,看自己需要的配置点勾
4、生成trace文件如目录所示,确保电脑有chome浏览器,在浏览器输入 chrome://tracing/ 会显示如图
5、点load,选择trace所以目录
6、使用快捷键查看,W:放大 S:缩小 A:左移 D:右移
G:选中当前Task开始位置 SHIFT+G:选中Task结束的位置
放大选中查看,就可以看到具体耗时情况,尤其用来看卡顿,优化UI,启动速度非常有效
6.代码中添加代码生成trace文件
android4.3 api18以上,允许代码生成trace文件。使用
Trace.beginSection(Tag);开始
Trace.endSection();结束
必须保证在统一进程begin和end,类似上锁,多个begin和end出现,会找到最近那个匹配
7、接下来看看traceview分析trace log
使用TraceView主要有两种方式:
第一种方式打开DDMS,选择一个进程,后点“Start Method Profiling”按钮,等红色小点变成黑色以后就表示TraceView已启动完成。然后开始进行对有怀疑的地方进行滑动点击操作。然后再点“Start Method Profiling”按钮按钮,等一会就会出现上面这幅图,然后就可以开始分析了。按钮如图
第2种方式 android.os.Debug.startMethodTracing()和android.os.Debug.stopMethodTracing();运行完在sdcard目录生成trace文件,也可以指定名字,在startMethodTracing(String traceName);
再使用命令导出到电脑,用ddms打开 adb pull /sdcard/wanghp.trace /adin
重点:
1、Calls + Recur Calls / Total 调用次数,递归次数
2、Cpu Time / Call,cpu时间和调用次数,比如一个recyclerview,可以分析adapter总共时间,以及调用次数,分析耗时,效率问题
3、cpu time和real time cpu执行时间和真正时间,如果有区别,那real 比cputime高,存在阻塞
刚学会用tracelog分析,继续研究,毕竟该工具没文档,自己guess