性能优化之主页冷启动

925 阅读2分钟

研究工具

Debug.startMethodTracing()
Debug.stopMethodTracing()
trace文件位置:sdcard/Android/data/package/file/trace
profile的火焰图分析生成trace文件,查看各方法耗时统计

1.启动的方式

性能优化是从APP冷启动开始的,这里应该注意区分冷启动和热启动的差别。

冷启动:从点击应用图标开始
        1.开启全新的进程
        2.会执行application
        3.再执行launchActivity
热启动:退出应用后从最近应用中恢复
        1.进程还没有被杀死
        2.不会执行application,直接启动launchActivity

2.Application的执行

在这里面做性能优化的注意事项:

1.非必要在此的初始化的模块适当往后迁移(至欢迎页)
2.极力避免涉及IO的操作
3.非急用的第三方初始化往后迁移(至欢迎页或主页)
4.非必要在主线程的第三方延时初始化(TimerTask)

3.欢迎页的执行

1.是用户看到的第一个页面,也需要极速显示
2.采用view.postDelay等方式延时初始化(包括在application中迁移过来的)
3.页面出来之后再执行业务模块(包括为主页做些:网络、数据等资源的准备)

4.广告页的执行

本项目没有此页

5.主页的执行

1.主页通常承载了大量的功能业务,并且需要一次性展示
2.这时按照activity的启动流程分析setContentView(*)中的inflate、installDecorView等渲染功能非常耗时,可达到500ms-1000ms以上
3.可采用viewstub的方式,先展示activity的基本框架
4.等待各个业务模块的数据加载完成后再分别inflate相应模块的view
5.这样用户感受到的整个过程就是平滑的、逐步的、可感知的,即时最终完成的耗时仍然超过1s,用户体验也是友好的