学习自
https://www.jianshu.com/p/f5514b1a826c
这个老哥,强的不谈,大家可以去看看他的文章,干货满满。
冷启动流程
先(过几天我会回顾下启动流程并修改这3步)
1.加载app
2.显示空白bg window
3.创建app进程
然后(这几步我进行了补充)
1.创建app对象
2.启动main thread
3.创建activity
4.onCreate通过xml parser、反射拿到view
5.onResume后setDecor到phoneWindow上开始绘制
6.phoneWindow替换bg window
启动页
是所有厂商一致使用的神器。也是google的建议。
原因在于你可以在这段等待时间,做太多事了。
这段时期,属于application中不便进行的操作,放到这里来初始化的时期。
但是就算是这样,这段等待时间也被期望足够的短。
因为在用我的老手机前,我每次打开支付宝都要等上4-5秒,换了新手机之后,才发现,原来启动页是可以一闪而逝就主页面了?!
所以这段时间,不是肆意挥霍的时间,我们一般设置初始化操作完成后,选择关闭这个页面
启动页的设置方式
Layout XML file:
异步
这个异步不是瞎JB异步的,需要你有很强的并发技术,以及对你的项目启动流程中的每个组件有深到极致的了解。
下面列出几个点:
1.线程池的创建也是耗费时间的,所以不要在application中创建线程池,延迟他。
2.线程设置优先级,比如 THREAD_PRIORITY_BACKGROUND 10
延时
不仅可以把某些组件初始化延时到启动页,还可以延时到使用的时候。
找到性能瓶颈
卡顿一般发生在:
1.io、数据库
2.主页
3.第三方
找到你的项目的性能瓶颈,可以用trace工具看耗时
其他
1.策略,已经不关乎代码了,比如cache,启动页这次下载下次用。。。
2.透彻了解你的项目
3.其他的优化技术。内存优化、网络请求优化、IO优化。。。这些都会有助于启动优化。因为启动的初始化离不开这些操作。。
还有一个multidex的优化
暂时没学 日后补充
还有很多。。。