启动优化及优化工具

259 阅读2分钟

研究启动优化不知不觉都一周多了,需要赶快做个小笔记,要不后面就忘了

1. 打开启动页面时间

通过adb命令可以知道启动时间

db shell am start -S -W 包名/启动页面

启动页面就是

<category android:name="android.intent.category.LAUNCHER" />

对应的Activity

2. 生成.trace文件,并通过profile查看

  1. 在开始生成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());
  1. 在结束生成trace文件的地方调用
Debug.stopMethodTracing();

一定要结束调用,否则trace文件的大小为0

  1. 在Android Profile中打开

image.png

选择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”就可以得到这个插桩所用的时间

参考:# 中国大学 MOOC Android 性能优化:冷启动优化总结

# Android性能优化--Systrace工具

# Android 性能分析工具介绍