何为冷启动,热启动
这里主要是了解一下关于android的一些理论知识
当一个app从正式展现到用户面前直到初始界面就绪这个过程就称为启动。但是在Android的启动中分为热启动和冷启动,主要划分的依据是启动消耗的资源和启动时的细致流程。
冷启动
由于系统会又一次创建一个新的进程分配给它。所以会先创建和初始化Application类,再创建和初始化MainActivity类(包含一系列的測量、布局、绘制),最后显示在界面上。 切记,这是又开了全新的进程供其使用
热启动
:热启动由于会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包含一系列的測量、布局、绘制)。所以热启动的过程仅仅须要创建和初始化一个MainActivity即可了。而不必创建和初始化Application,由于一个应用从新进程的创建到进程的销毁。简而言之,就是该启动是因为之前就有一定的资源准备中
资源的准备不一致导致消耗的时间不一样,一般来说,热启动的时间消耗要比冷启动的时间消耗小得多。
不论怎么说,启动的时间越快越好。那么就得降低启动时间的消耗。
大多数情况下应用的启动都是冷启动。由于用户都会在任务列表中手动关闭遗留的应用进程。
降低耗时操作
首先明白启动的整体流程
那么肯定的是,要降低时间成本必须得在这几个流程中实现。
参考的相关资料: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>