Android知识体系总结之Android部分之冷启动&热启动篇

时间:2024-03-16 15:02:22

Android知识体系总结之Android部分之冷启动&热启动篇

Android知识体系总结之Android部分之冷启动&热启动篇

1.冷启动&热启动

1.1 什么是冷启动?

  当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。它的特点就是冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

1.2 什么是热启动?

  当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。它的特点就是热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application,因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

2.冷启动优化方案

2.1 冷启动的流程&优化方案

关于冷启动的时间值问题::从应用启动(创建进程)开始计算,到完成视图的第一次绘制(即Activiy内容对用户可见)为止。Zygote进程中fork创建出一个新的进程,然后创建和初始化Application类,创建MainActivity类,inflate布局,当onCreate/onStart/onResum方法都走完,contentView的measure/layout/draw显示在界面上。因此冷启动的流程就是:

冷启动的流程:Application构造器–>attachBaseContext()–>OnCreate()–>Activity构造器–>onCreate–>配置主题背景等属性–>onStart()–>onResume–>测量布局绘制显示在界面上。

冷启动的优化方案如下:

  • a.减少onCreate方法的工作量。
  • b.不要让Application参与业务逻辑。
  • c.不要在Application中做耗时操作。
  • d.不要以静态变量方式在Application中保存数据。
  • e.布局优化/mainThread尽量延迟初始化

2.2 案例演示之Android App启动的时候黑白屏问题&解决方案

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法