因为之前也遇到过白屏/黑屏的情况,虽然时间不长,但是还是给用户体验不好,这篇博文说的很好,故做一下记录。
造成白屏/黑屏的情况是因为有个冷启动时间,什么是冷启动时间呢?
冷启动时间是指用户从手机桌面点击APP的那一刻起到启动页面的Activity调用onCreate()方法之间的这个时间段。
那在冷启动的时间段内发生了什么?
首先我们要知道当打开一个Activity的时候发生了什么,在一个Activity打开时,如果该Activity所属的Application还没有启动,那么系统会为这个Activity创建一个进程(每创建一个进程都会调用一次Application,所以Application的onCreate()方法可能会被调用多次),在进程的创建和初始化中,势必会消耗一些时间,在这个时间里,WindowManager会先加载APP里的主题样式里的窗口背景(windowBackground)作为预览元素,然后才去真正的加载布局,如果这个时间过长,而默认的背景又是黑色或者白色,这样会给用户造成一种错觉,这个APP很卡,很不流畅,自然也影响了用户体验。
作者还提供2中方式消除这种情况:
(1)将背景图设置成我们APP的Logo图,作为APP启动的引导,现在市面上大部分的APP也是这么做的。
<style name="AppWelcome" parent="AppTheme">
<item name="android:windowBackground">@mipmap/bg_welcome_start</item>
</style>
(2)将背景颜色设置为透明色,这样当用户点击桌面APP图片的时候,并不会”立即”进入APP,而且在桌面上停留一会,其实这时候APP已经是启动的了。
<style name="Appwelcome" parent="android:Theme.Translucent.NoTitleBar.Fullscreen" />
这样的话就不能用AppCompatActivity了,作者提供了解决办法,详细请看Android冷启动实现APP秒开。