研究启动优化不知不觉都一周多了,需要赶快做个小笔记,要不后面就忘了
1. 打开启动页面时间
通过adb命令可以知道启动时间
db shell am start -S -W 包名/启动页面
启动页面就是
<category android:name="android.intent.category.LAUNCHER" />
对应的Activity
2. 生成.trace文件,并通过profile查看
- 在开始生成trace文件的地方,添加
//保存Trace文件的目录
File file = new File(Environment.getExternalStorageDirectory(), "ucmooc02.trace");
//采集方式有以下两种,根据需求选择其一
//第一种:通过采样的方式,追踪堆栈信息
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// //通过采样方式追踪堆栈信息,需要指定文件保存目录、文件最大大小(单位M)、采样间隔(单位us)
// Debug.startMethodTracingSampling(file.getAbsolutePath(), 80, 1000);
// }
//第二种:通过追踪的方式,全量采集堆栈信息
Debug.startMethodTracing(file.getAbsolutePath());
- 在结束生成trace文件的地方调用
Debug.stopMethodTracing();
一定要结束调用,否则trace文件的大小为0
- 在Android Profile中打开
选择Load from file,把刚刚生成的trace文件打开,就可以看到具体的调用栈信息
3. systrace使用
使用systrace,并生成对应的html文件,在Chrome浏览器中使用
主要是参考# Android 性能优化系列 - 01 手把手教你使用 systrace, 但是我生成的html打开直接都是空的
需要先打开网址chrome://tracing/ 然后load对应的html文件,就可以看了,具体看起来不是很方便,而且没有搜索到插桩(Trace.beginSection("tag");Trace.endSection();)的内容,可以用最新的分析软件Perfetto
4. Perfetto的使用
最开始是通过哔哩哔哩上这个视频# 使用 Systrace 作性能分析 | ADS 中文字幕视频
这个参考# Android性能分析神兵利器:Perfetto
adb pull /data/local/traces
这个命令可以把手机中traces文件卡导出来
这个也是可以通过
Trace.beginSection("tag");
Trace.endSection();
进行插桩,通过在Perfetto通过搜索对应的“tag”就可以得到这个插桩所用的时间