1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。
冷启动:(Cold start)
通常,大多数情况下,我们应用的启动方式都是冷启动
在安卓系统中,系统为每个运行的应用至少分配一个进程 (多进程应用申请多个进程) 。从进程角度上讲,冷启动就是在启动应用前,系统中没有该应用的人和进程信息 (包括 Activity、Service 等) 。所以,冷启动产生的场景就很容易理解了,比如设备开机后应用的第一次启动,系统杀掉应用进程 (如:系统内存吃紧引发的 kill 和 用户主动产生的 kill) 后 的再次启动等。那么自然这种方式下,应用的启动时间最长,因为相比另外两种启动方式,系统和我们的应用要做的工作最多。
应用发生冷启动时,系统有三件任务要做:
- 开始加载并启动应用
- 应用启动后,显示一个空白的启动窗口
- 创建应用进程信息;
系统创建应用进程后,应用就要做下面这些事情:
- 初始化应用中的对象 (比如 Application 中的工作);
- 启动主线程 (UI 线程) ;
- 创建第一个 Activity;
- 加载内容视图 (Inflating) ;
- 计算视图在屏幕上的位置排版 (Laying out);
- 绘制视图 (draw)。
暖启动
当应用中的 Activities 被销毁,但在内存中常驻时,应用的启动方式就会变为暖启动。相比冷启动,暖启动过程减少了对象初始化、布局加载等工作,启动时间更短。但启动时,系统依然会展示一个空白背景,直到第一个 Activity 的内容呈现为止。
热启动
相比暖启动,热启动时应用做的工作更少,启动时间更短。热启动产生的场景很多,常见如:用户使用返回键退出应用,然后马上又重新启动
启动时间计算:
从 Android 4.4 (API 19) 开始,Logcat 自动帮我们打印出应用的启动时间。这个时间值从应用启动 (创建进程) 开始计算,到完成视图的第一次绘制 (即 Activity 内容对用户可见) 为止。