解决APP启动时短暂黑屏的问题

 
 
原因:
在一个Activity打开时,如果该Activity所属的Application还没有启动,那么系统会为这个Activity创建一个进程(每创建一个进程都会调用一次Application,
所以Application的onCreate()方法可能会被调用多次),在进程的创建和初始化中,势必会消耗一些时间,在这个时间里,WindowManager会先加载APP里的主题
样式里的窗口背景(windowBackground)作为预览元素,然后才去真正的加载布局,如果这个时间过长,而默认的背景又是黑色
用户从手机桌面点击APP的那一刻起到启动页面的Activity调用onCreate()方法之间的这个时间段称之为冷启动时间

解决方案:为启动页设置特定的主题

<activity
    android:name=".SplashActivity"
    android:configChanges="orientation|screenSize|uiMode"
    android:label="@string/app_name"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
    </intent-filter>
</activity>



1. 为启动页的Activity设置特定主体,新增windowDisablePreview属性设为true即可
<style name="SplashTheme" parent="AppTheme.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowDisablePreview">true</item>
</style> 
或者
2.手动设置背景图片
<style name="SplashTheme" parent="AppTheme.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/img_splash</item>
</style> 


其中 方案1用户点击APP的时候并不会立即进入APP,而是在桌面上停顿一会,其实此时APP已经启动  
     方案2中如果将windowBackgraound的背景设置为完全透明,效果与方案1一致(微信就是采用的这种方案),
     如果要设置启动页背景图注意内存问题即可,大部分应用也是采用这种方案

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值