1、基础
1.1 启动的类型
首先是启动的三种类型:
- 冷启动场景:后台完全没有任何进程的情况下,启动最慢;
- 温启动场景:按返回键退回主界面再从主界面打开的情形,较快;
- 热启动场景:按 Home 键退回到主界面再从主界面打开的情形,最快。
应用启动的过程实际上也就是 Activity 启动的流程,所以具体涉及的源码不是我们这里的重点,你可以查找 Activity 启动流程相关的文章来了解源码。
其实优化应用的启动速度无非也就是在那几个生命周期方法中进行优化,不做太多耗时操作等:Application 的生命周期和 Activity 的生命周期。
1.2 启动速度的测量
当然,我们而已通过自己的感觉判断启动的快慢,但量化还是非常重要的,不然你都无法向 PM 交差不是。所以,我们有必要了解下 Android 中的启动速度是如何测量的。
方式 1:使用 ADB
获取启动速度的第一种方式是使用 ADB,使用下面的指令的时候在启动应用的时候会使用 AMS 进行统计。但是缺点是统计时间不够准确:
adb shell am start -n {包名}/{包名}.{
活动名}
方式 2:代码埋点
在 Application 的 attachBaseContext()
方法中记录开始时间,第一个 Activity 的 onWindowFocusChanged()
中记录结束时间。缺点是统计不完全,因为在 attachBaseContext()
之前还有许多操作。
方式 3:TraceView
在 AS 中打开 DDMS,或者到 SDK 安装目录的 tools 目录下面使用 <