1、app的启动流程
App启动的描述。应用启动分为冷启动、热启动、温启动。而冷启动是应用程序从零开始,里面涉及到更复杂的知识。我们这次主要是对应用的冷启动进行分析和优化。应用在冷启动的时候,需要执行下面三个任务:
加载和启动应用程序;
App启动之后立即展示出一个空白的启动窗口;
创建App程序的进程;
在这三个任务执行后,系统创建了应用进程,那么应用进程会执行下一步:
创建App对象;
启动Main Thread;
创建启动页的Activity;
加载View;
布置屏幕;
进行初始绘制
当应用进程完成初始绘制之后,系统进程用启动页的Activity来替换当前显示的背景窗口,这个时刻用户就可以使用App了。应用进程的创建,那么它肯定会执行我们的Application的生命周期,当创建完成App的应用进程之后,主线程会初始化我们第一个页面MainActivity与执行MainActivity的生命周期。在分析如何优化前,我们可以先了解一下,我们的应用是不是需要对冷启动进行优化。
启动时间检测:
那么启动时间多少才是合适呢?在官方文档中描述到当冷启动在5秒或者更长的时,Android vitals就会认为你的应用需要进行冷启动相关的优化。不过Android vitals是针对Google Play的一款应用质量检测工具。
1、ADB命令
adbshell am start -W [packageName]/[packageName.MainActivity]
Status: ok
Activity: com.xx.xxx/com.xx.xxxx.welcome.view.WelcomeActivity
ThisTime: 242
TotalTime: 242
WaitTime: 288
Complete
ThisTime:是指调用过程中最后一个Activity启动时间到这个Activity的 startActivityAndWait调用结束;
TotalTime:是指调用过程中第一个Activity的启动时间到最后一个Activity的 startActivityAndWait结束。
WaitTime:是startActivityAndWait这个方法的调用耗时;
2、Systrace
Systrace非常直观地展示每个线程上面的API的调用顺序和耗时情况。
启动优化实操用户体验优化