Android手机在启动应用时,闪一下黑屏,有的手机1秒不到,有的2秒或以上?一直没注意其他应用,我试了几个demo都会有这种现象。然后我去测试qq,京东淘宝等app,发现他们并没有这种现象。后来我网上查找了原因,
闪黑屏的原因主要是因为Android系统启动我们应用时先要加载Application的onCreate和onResume后,还要再加载application里带有in<tent-filter>的Activity的onCreate和onResume,然后再显示第一个Activity。这里测试过,即使是onCreate和onResume不加载其他仅放一张图片,启动时仍然会闪一下黑屏。所以这个闪黑屏是不可避免的。但是看到QQ和微信等应用时,这个是怎么实现的?我们可以自定义一个theme来掩饰一下黑屏。
//1/设置背景图Theme
<style name="Theme.AppStartLoad" parent="android:Theme">
<item name="android:windowBackground">@drawable/ipod_bg</item>
<item name="android:windowNoTitle">true</item>
</style>
//2、设置透明Theme
<style name="Theme.AppStartLoadTranslucent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
解决的原理
•Theme.AppStartLoad 程序启动时,界面先显示第一个Activity的背景图,然后再刷新其他界面控件,这时候界面就会显示activity的背景图片。我们就看不到黑屏现象了。
•Theme.AppStartLoadTranslucent 程序启动时,我们将当前的activity透明处理了,感觉会有一点延迟,但是我们看不到黑屏了。
解决的方法建议使用第二种,现在大多数的app都会使用第二种。