1. 应用冷启动和热启动的区别
(1) 冷启动方式:应用启动前,系统没有该应用的任务进程;启动时系统会分配一个新进程给该应用(从Application类开始加载,进行测量、布局和绘制来显示界面)
如:首此启动应用或杀死应用进程后重新启动
(2) 热启动:应用启动前,系统已有该应用的进程;启动时会从后台已有的进程启动(直接从MainActivity类加载)
如:点击返回键或home键退出应用,然后马上又重新启动应用
2. 冷启动流程
冷启动流程.png
3. 冷启动时间优化
说明:冷启动时间无法避免,即用户总要等待一段时间来启动应用。
(1) 减少Application和Activity的onCreate()方法的工作量
备注:第三方sdk的初始化建议在Application中进行(在日常开发中都会重写Application类),可以采用懒加载的方式移除这部分代码,当真正使用这些sdk的时候再进行初始化;但是懒加载也存在缺点,就是不能把所有场景都列出(哪些sdk需要在哪些地方使用,然在使用前再初始化),这其实也是个很耗时的操作。
(2) 不要在Application进行业务操作和耗时操作
(3) 不要在Application中以静态变量的方式保存数据(静态变量和app的生命周期一样长,易造成内存泄漏和数据安全问题)
(4) 避免复杂布局和布局嵌套(view 的层级越多,布局测量和绘制就越花时间)
(5) 在mainThread中使用懒加载来延缓资源初始化或在子线程中来初始化资源(把所有资源的初始化放到 mainThread 中会减慢启动速度)