和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、App 启动模式分类
二、App 启动时间测量与分析
三、应用中冷启动避免白屏、黑屏方案
四、Framework 层解决冷启动白屏、黑屏方案
五、App 启动优化原理
六、App 启动优化简介
七、App 启动优化方案
八、在 PMS中 App 启动优化方案
本文将讨论如何优化应用的启动时间,首先我们需要了解APP
启动的相关内容。用户希望APP
能够快速响应并加载。 一个启动速度慢的APP
不符合用户期望,可能会令用户失望,并且可能会导致用户对您的应用程序评价不佳,甚至会卸载你的应用。
一、App 启动模式分类
App 启动模式分以下 三 类 :
冷启动
热启动
温热启动
1.冷启动
APP
从零开始,APP
启动之前,系统没有为此 APP
创建独立进程。比如:设备启动后,APP
第一次Launch
或者APP
被Kill
掉后的重启。这种类型的启动优化存在很大挑战,因为Android
系统或应用还有其他更多的后台进程在运行。
启动流程大致如下:
点击Launcher 上的 icon开加载app
-->立即显示白屏或黑屏等
--> Application onCreate
--> Activity Init
----> Activity onCreate
---> 初始化数据,填充显示View
---> Activity onResume
等,详细请看下图:
App启动进程优化
2. 热启动
APP
的热启动要比 冷启动简单得多,内存开销也更低。APP
热启动时候,所有的系统都是把你的Activity
带到前台。如果APP
的所有Activity
仍驻留在内存中,则APP
可以避免重复对象初始化、布局绘制和显示等工作。
如果APP
在内存中被清理掉,比如调用ontrimmemory()
,当响应热启动时,这些对象将重新被创建。
热启动与冷启动相同的屏幕行为:
系统进程会显示一个空白屏幕,直到应用程序完成渲染后将此空白屏幕移除掉,此屏幕创建会在加载APP
时候立即创建,如需查看创建流程,需要查看PhoneWindosManger
中AddWindows
方法。
3. 温热启动
处于冷启动与热启动之间,既包含一些冷启动的操作,又含有部分热启动的功能。例如以下两种状态:
1. 用户退出APP
后重新Launch
。
此时此APP
的进程可能会存在,然鹅,Activity
必须重新创建并调用onCreate
方法
2. APP 被缓存中清理掉时。
此时用户重新Launch APP
时,此APP
的进程和Activity
都需要重新创建,但是任务栈中会保存部分APP
实例数据(bundle类型
)传递个Activity onCre