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机型众多,需要关心应用在用户手机上的启动时间。
作者:pursuering
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341