开发项目中遇到黑白屏,然后就记录下来啦。。。。
我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,所以这个效果很影响用户体验。
那出现这个黑白屏的现象的原理是什么啦? 知道问题所在然后才好对症下药的。
原因:(借用一个大佬说的)产生这个现象的原因,当我们在启动一个应用时,系统会去检查是否已经存在这样一个进程,如果不存在,就是冷启动。系统和APP本身都有很多工作需要处理。首先系统的服务会先检查startActivity中的intent的信息,然后在去创建进程,最后才是执行启动Acitivy的操作。而我们上面提到的显示白黑屏的问题,就是在这段时间内产生的。
系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这一步操作时,系统会根据我们设置的Theme来指定它的Theme 主题颜色,Window 布局的顶层时DecorView,StartingWindow显示一个空DecorView,我们在Style中的设置就决定了显示的是白屏还是黑屏。
发现问题所在:那我在 在清单文件 在AndroidManifest文件中设置: 修改Stlyle 样式:
出现白屏系统默认的背景颜色是白色的 还有 黑色
<!--***************默认样式***************-->
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
所以可以自定义 Stlyle 的样式 :
1 将启动的 白屏替换为 自定义的图片
相对应的启动页
这样黑白屏的问题就处理啦。
那么:Window 布局的顶层时DecorView,StartingWindow显示一个空DecorView,那我们可以关闭这个吗?当然是可以的。
当这样做流畅性不是很好的,还是推荐使用第一种,自定义样式 winddowbackground 使用 背景图片 和 xml 布局都是可以的。