关于启动白屏的原理就不解释了,百度一搜一大推,优化方案也有很多,包括异步加载、懒加载,即使这样APP在冷启动时还是会有短暂的显示白屏的时间,可以通过设置第一个启动Activity的theme,windowDisablePreview或者windowIsTranslucent设置为true,再或者windowBackGround设置透明,这样再启动时确实能解决白屏问题,但让人感觉卡顿(会停留在桌面一会)。
这里给出新浪微博、keep的解决方案,通过反编译查看他们app的theme,都是设置windowBackground属性
微博的是两张图片
新建一个xml,通过layer加载两张图片
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/welcome_background" android:drawable="@drawable/welcome_android" />
<item android:top="@dimen/splash_slogan_margin_top">
<bitmap android:gravity="center|top" android:src="@drawable/welcome_android_slogan" />
</item>
</layer-list>
keep的也是两张图片加一个背景色,这样在点击app图标时就能瞬间看见欢迎页,当然他们欢迎页还有广告,没有广告的时候不设置setContentView,延时两秒后跳转界面