?这篇文字其实没什么内容,就是介绍了一下冷启动跟热启动以及白屏。
应用启动流程是指从启动到显示主界面这一段,全流程在下面的热启动介绍。
应用启动分为热启动跟冷启动。冷启动就是就是应用之前没有被点开过,或者点开之后又在最近任务中删除,不会在最近任务中;热启动就是应用被点开过了,在最近任务中能看到它。
冷启动就是要走应用启动的全流程,创建应用程序进程-->创建和初始化Application-->创建和初始化MainActivity-->MainActivity中View的measure、layout、draw。
热启动已经有存活的Application了,只需要执行:创建和初始化MainActivity-->MainActivity中View的measure、layout、draw。
我个人对热启动、冷启动的记忆区分就是,热启动就是趁应用还没有彻底凉凉(进程彻底被杀死)的时候启动应用。
查看启动时间命令行:
adb shell am start -W 包名/主界面含包名全路径?
例子:adb shell am start -W com.example.sim/com.example.sim.MainActivity
结果如下图:
????????冷启动:
?????????热启动:
可见在这个程序里冷启动花费的时间比热启动多得多。
?冷启动介绍里已经列举了应用启动的流程,避免在这个流程里写太多耗时操作就行,可以将一些耗时操作放到异步进程进行,降低布局的层级也可以减少View的measure、layout、draw时间。
我们自己开发app的时候,点击桌面图标进入app时会看到白屏,用户看着白屏的体验可能不太好,可以将它设置为好看的图片。
1.在theme.xml文件里新建一个style。
<style name="Theme.SIM.MainActivity">
<item name="android:windowBackground">@drawable/ic_launcher_foreground</item>
</style>
2.Manifast中将新的style用在MainActivity上。
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.SIM.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
3.在MainActivity的onCreate方法恢复原来的主题,不然背景会一直是那张图片。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_SIM);
setContentView(R.layout.activity_main);
}
这样之后你点开app图标就会显示这张图片了。
将style换成下面的就行,其他步骤跟图片是一样的,不过我试了没效果,不知道是为什么。
<style name="Theme.SIM.MainActivity">
<item name="android:windowIsTranslucent">true</item>
</style>