什么是Android应用冷启动?
当启动应用时,后台没有该应用的进程,这时系统会新创建一个新的进程分配给该应用,并且在此过程中会进行对象的初始化和绘制视图等操作,这种启动方式叫冷启动。
白屏原因
在进行冷启动时还没加载到布局文件就显示了Window窗口背景。
解决方案
假设一个应用启动时默认启动引导页
-
在styles.xml中实现窗口透明样式
注意:若无引导页就直接在AppTheme里实现这个属性,若有引导页且引导页继承的是AppCompatActivity则需要让样式指定parent为Theme.AppCompat的样式,否则会报错,这里的AppTheme是创建应用时自动创建的应用样式。
<style name="GuideTheme" parent="AppTheme"> <item name="android:windowIsTranslucent">true</item> </style>
-
在AndroidManifest.xml文件中找到引导页的声明,并加上android:theme属性
<activity android:name=".GuideActivity" android:theme="@style/GuideTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
设置后启动感觉略有延迟?
不用担心,这是因为启动时Window背景为透明的,实际上应用已经启动了,若还是觉得不爽的话可以直接将引导页的窗口背景设置为引导页的图片。
<style name="GuideTheme" parent="AppTheme">
<item name="android:background">@drawable/splash</item>
<item name="android:windowBackground">@drawable/splash</item>
</style>
注意:
1. background与windowBackground效果一样
2. 图片可能出现变形