解决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一致(微信就是采用的这种方案),
     如果要设置启动页背景图注意内存问题即可,大部分应用也是采用这种方案
 

猜你喜欢

转载自blog.csdn.net/zhangbo328/article/details/52183395