研究工具
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,用户体验也是友好的.
最后
最后感谢大家能看到这,希望能带给大家帮助!
同时也希望各位可以帮忙点个赞,关注一下,谢谢大家的支持!
漫漫开发之路,我们只是其中的一小部分……只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!
我从事Android开发快十年了,今年年初我花近两个月的时间收录整理了一套Android进阶知识体系,如果有想法深入的系统化的去学习,可以Android进阶技术交流(895077617 )免费获取整理版的资料
**,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。
重要的事说三遍,关注+喜欢,让更多需要的朋友们都可以看到并且领到!
网友评论