关于App启动时出现黑屏或者白屏的现象

首先来描述一下问题:

最近使用华硕的pad测试Demo的时候,偶然发现App启动的时候会先出现一个白屏,最开始以为是设备卡顿造成的,后来发现每次都会出现,瞬间玻璃心碎了一地,开始下载各种应用,反复打开关闭,发现不是只有我自己写的Demo会有这种问题,甚至连系统自带的一些页面打开也会出现黑屏/白屏。具体情况如图所示:




我当时的AndroidManifest.xml文件内容如下:

styles.xml文件内容:

原因分析:

经过研究发现,当App启动的时候,首先会执行Application中的onCreate(),在进程创建和初始化的过程中,Activity是没有执行的,而是执行了startingWindow,显示一个空的DecorView,而前面提到的黑屏/白屏有很大关系。

 

如果你选择了Black系列的Style,就会出现黑屏:

android:theme="@style/android:Theme.Black"

如果你选择了Light系列的Style,就会出现白屏:

android:theme="@style/android:Theme.Light"

 

解决方法:

只需要在设置Theme的时候添加如下属性:

<style name="AppTheme" parent="android:Theme.Black">

     <!-- Customize your theme here. -->

     <item name="android:windowIsTranslucent">true</item>

</style>

 

上面这样处理有时候会造成App启动慢的假象,实际上在App启动后的一小部分时间内,还显示的是桌面,而且这段时间内点击桌面很可能会没有响应(部分应用),当然这个方法也不适用于Activity间的跳转。

 

除了上面说的一种方法外,在App启动的时候还可以采用另外一种方式,直接在style中设置android:background显示为图片背景:

<style name="AppTheme" parent="android:Theme.Black">

     <!-- Customize your theme here. -->

     <item name="android:background">@mipmap/ic_launcher</item>

     <!--<item name="android:windowIsTranslucent">true</item>-->

</style>



参考: 

http://cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous/ 

https://www.bignerdranch.com/blog/splash-screens-the-right-way/

http://blog.csdn.net/yanzhenjie1003/article/details/52201896



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值