黑屏或者白屏原因
- 应用启动时时黑屏和白屏,是因为在点击应用启动一直到第一个页面的onResume全部执行完成以后,才会显示界面。【这段时间】显示的是系统默认的黑屏或者白屏主题。
- 而Activity切换的时候,也会出现类似的问题,而Activity切换的生命周期是
activity1-onPause()->activity2-onCreate()->activity2-onStart()->activity2-onResume()->activity1-onStop();
我们理所当然的认为切换Activity黑屏会更加明显,但是实际测试却并未如此。
activity在【本类】的onResume()方法完全执行完成以后,才会显示。
activity在【父类】的onPause()方法执行完成以后,过【一会儿】,才会黑屏消失。
因此在Activity1切换到Activity2的时候,会感觉在Activity1停了【一会儿】,才切换到Activity2。Activity的切换生命周期时间减去这【一会儿】,由于系统的Activity切换有默认动画,会感觉一下就跳过去了。
这个【一会儿】貌似是在异步回收一些系统的资源。(有待深入)
避免启动时黑屏或者白屏
出现问题的原因,我们大致清楚了,那么就能知道怎么解决它了。
解决启动页黑屏问题
方法一:设置application主题透明
这样会有启动慢的感觉
方法二:设置application主题背景为欢迎页背景
这种方式应该算是比较完善的方式了,启动瞬间的背景图跟WelcomeActivity背景图是一样的。
方法三(优化方法二)
我们可以根据Activity切换方式获得灵感,我们可以在方法二的基础上加入动画。最常见的应该就是缩放动画了吧!
PS:即便是这样,在应用启动到Application之间,还是有一丁点儿的时间,这个可以在录屏软件中录制过程中看出来。
Demo效果如下
传送门