App在点击图标启动时,初始化时候需要一段时间。
如果因为各种原因,导致这个初始化时间过长,会造成很糟糕的用户体验。
经常会产生长时间黑屏,或者长时间白屏的现象。其实产生这一现象的时候App已经进入要启动的页面了。
产生黑屏或者白屏的原因是,启动页Activity已经进入,但是由于初始化耗时等原因,启动页Activity的布局layout还未来得及载入。
知道这个原因之后,如何解决?
为什么会是黑屏或者白屏
Activity主题大致分两种,一种是Black(产生黑屏),一种是Light(产生白屏)
但是Activity已经进入,只是他的布局文件没有进入,所以可以处理的方式就是给启动页的Activity窗口设置一个背景。就是布局载入之前的窗口背景。
演示 点击下载Demo源码
上代码 自定义Style 背景设置好图片
<!-- 防止欢迎页白屏或者黑屏,设置图片 -->
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowBackground">@mipmap/bg_loading</item>
<item name="android:windowFullscreen">true</item>
<item name="windowNoTitle">true</item>
<!--<item name="android:windowIsTranslucent">false</item>-->
<!--<item name="android:windowDisablePreview">true</item>-->
</style>
启动页引用自定义的Style
<activity
android:name=".LoadingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_loading"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>