前言

在Android手机中,打开一个App,就会先展示一个白屏,然后才是进入欢迎页面。为什么会有白屏呢?

白屏是什么

首先我们要知道这个白屏是什么,才能去解决这个问题。我们知道Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog、还是Toast,他们的视图实际上都是附加在Window上的。没错,这个白屏,就是Window的背景。
我们先来看一下Android中App的启动过程:

   1. 系统启动时init进程会创建Zygote进程,Zygote进程负责后续Android应用程序框架层的其它进程的创建和启动工作。   2. Zygote进程会首先创建一个SystemServer进程,SystemServer进程负责启动系统的关键服务,如包管理服务PackageManagerService和应用程序组件管理服务ActivityManagerService。  3. 当我们需要启动一个Android应用程序时,ActivityManagerService会通过Socket进程间通信机制,通知Zygote进程为这个应用程序创建一个新的进程。

而系统执行这个过程是需要时间的,在创建完成之前,界面是呈现假死状态的,因为用户会以为没有点到APP而再次点击,这极大的降低用户体验,Android需要及时做出反馈去避免这段尴尬。于是系统根据你的manifest文件设置的主题颜色来展示一个白屏或者黑屏,这个窗口,我们称为预览窗口。

解决方案

既然知道了原因,那么怎么解决呢,这里有这么几个解决的方法:

禁止加载或者设置透明

    
通过创建一个Style,并且设置windoDisablePreview为true,那么就禁止了预览窗口的启动。
    

或者是通过设定windowIsTranslucent 为true的方式,使预览窗口透明,那么也能打到同样的效果。
但是这两种做法是不推荐的,如果在你的入口Activity中有太多的操作导致,就会导致卡顿的不良用户体验。

自定义预览窗口:最佳方案

将预览窗口设置成一张图片,有着非常好的效果

    <style name="PreViewTheme" parent="Theme.AppCompat.Light.NoActionBar">        <item name="android:windowBackground">@mipmap/login_bg    style>

当启动app时,会立即显示你要展示的图片,然后再进入你的欢迎页中。当然这样做不可避免就有了页面的跳转,所以我们在图片的选择上应当做到和欢迎页面最开始展示的界面相同。这样,用户就毫无感觉啦~~~

更多相关文章

  1. 使用Android(安卓)Studio开发Flutter,在Run窗口看不到日志了?
  2. 我的开源项目:Android图片剪裁库
  3. 创建Android守护进程实例(底层服务)
  4. Android仿淘口令复制弹出框功能(简答版)
  5. Android艺术探索学习笔记:第2章 IPC机制
  6. Android性能优化系列---管理你的app内存(一)
  7. Android通信机制之Android架构(一)
  8. Android开发四年相关面试知识整理
  9. Android(安卓)学习笔记 Service (二) Remote Service Sample

随机推荐

  1. IE:令人难以置信的跳跃表标题
  2. 如何在three.js中导入json和渲染
  3. iOS、Android、WebOS系统体系架构的比较
  4. 关于JavaScript方法,设置GridView中首项Ch
  5. 前端省市区(县)三级联动下拉框
  6. 在Internet Explorer中使用sprited按钮和
  7. touchableopacity onpress函数undefined(
  8. 将textarea值附加到现有数组javascript
  9. javascript 截取字符串方法汇总
  10. Javascript中的素数函数...多个语句