Android启动优化

一、启动分类

Android的启动分冷启动、热启动、温启动。
1、冷启动:当启动应用时,后台没有这个应用的进程,需创建新的进程。

冷启动过程:

click (点击应用图标)——>ipc——>Process.start——>ActivityThread
——>bindApplication——>lifeCycle——>ViewRootImpl

2、热启动:就是后台存在当前应用的进程(如按下Home键,退出应用),
再次点击打开应用,这个过程不需要创建进程,也不需要初始化application,也不需要初始化activity。

3、温启动:应用进程还在,可能因为系统内存不足,activity被回收,需要初始化activity。

从上面流程可以看出,冷启动相对耗时,启动优化基本上是针对冷启动做的处理。能优化的地方是从创建Application到首屏activity布局展示的操作。
总结:
1、application中oncreate中不要做耗时的操作。
2、application中异步初始化各种必须要初始化的三方SDK等。
3、application中延迟初始化,在需要做到的地方再初始化要用的三方SDK等。
4、首屏activity不要在oncreate做耗时操作,尽量放在子线程中处理。

二、启动时间的测量

启动时间测量的方法有两种:
1、adb 命令
特点:方便操作

adb shell am start -W packagename/首屏activity
例如:adb shell am start -W com.pursue.demo/com.pursue.demo.ui.flash.FlashActivity

输出

2、手动打点:
启动开始埋点,启动结束埋点取二者差值。

在application的attachBaseContext方法中计算起始时间(因attachBaseContext方法先于oncreate方法执行),结束时间是首屏activty的Feed数据第一条显示。如:
起始时间:
在这里插入图片描述结束时间:
在这里插入图片描述两种测量方法对比:
adb: 线下使用比较方便,但是不能带到线上
手动打点:可以带到线上,将打点取到的数据上传到服务器。

总结:建议使用手动打点方式,因Android机型众多,需要关心应用在用户手机上的启动时间。

发布了29 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sushineboy/article/details/104452861