何为冷启动,热启动

这里主要是了解一下关于android的一些理论知识


当一个app从正式展现到用户面前直到初始界面就绪这个过程就称为启动。但是在Android的启动中分为热启动和冷启动,主要划分的依据是启动消耗的资源和启动时的细致流程。

冷启动由于系统会又一次创建一个新的进程分配给它。所以会先创建和初始化Application类,再创建和初始化MainActivity类(包含一系列的測量、布局、绘制),最后显示在界面上。 切记,这是又开了全新的进程供其使用

热启动:热启动由于会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包含一系列的測量、布局、绘制)。所以热启动的过程仅仅须要创建和初始化一个MainActivity即可了。而不必创建和初始化Application,由于一个应用从新进程的创建到进程的销毁。简而言之,就是该启动是因为之前就有一定的资源准备中

资源的准备不一致导致消耗的时间不一样,一般来说,热启动的时间消耗要比冷启动的时间消耗小得多。

不论怎么说,启动的时间越快越好。那么就得降低启动时间的消耗。

大多数情况下应用的启动都是冷启动。由于用户都会在任务列表中手动关闭遗留的应用进程。

降低耗时操作

首先明白启动的整体流程

Android 热启动冷启动 温启动 android冷启动和热启动的区别_Android 热启动冷启动 温启动


那么肯定的是,要降低时间成本必须得在这几个流程中实现。

参考的相关资料:https://www.jianshu.com/p/03c0fd3fc245

1、不要让Application参与业务的操作
2、不要在APPlication进行耗时操作,比如有些开发者会在自己的APP里一系列文件夹或文件(比如我自己),这些I/O操作应该放到"确实该使用的时候再去创建"亦或者是数据库的一些操作。
3、不要以静态变量的方式在Application中保存数据等。

避免黑白屏

一般的策略就是展示app的logo或者brand 来避免:
构建一个style,背景可以进行自定义

<style name="AppWelcome" parent="AppTheme">
      <item name="android:windowBackground">@mipmap/bg_welcome_start</item>
  </style>

接着应用这个style到application中就好了。

<activity
          android:name=".app.main.MainActivity"
          android:theme="@style/AppWelcome"
          android:screenOrientation="portrait">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>