解决 APP启动白屏黑屏问题

作者: sydMobile | 来源:发表于2019-05-23 17:59 被阅读2次

闪屏页简介

闪屏页,我们手机上的每个 APP 几乎都有自己的闪屏页,就是在真正进入程序前,会有一个页面停顿几秒钟。其实我们完全可以充分利用好这几秒钟做很多的程序初始化了启动。


声明

为什么我的 APP 启动会白屏或者黑屏

有时候我们会发现,我们在启动我们自己的 APP 的时候,总是有那么点时间是白屏(黑屏),经过了白屏(黑屏)后才会进入我们的 APP。那么这是为什么呢?

模拟效果

下面我们模拟一下白屏的效果


20190522-splash开启.gif

可以看到打开 APP 的时候会有白屏的现象出现,当然我的这个演示 APP 程序没有那么复杂,因此我为了实现这种效果,就在 Application 中做了个睡眠。

    @Override
    public void onCreate() {
        super.onCreate();
        myApplication = this;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

这样就是出现了这种白屏的效果,由此可以得出结论,如果程序很复杂,并且有很多的初始化放到了 Application 中去完成了,那么这个时候刚打开程序的时候就会有个耗时,就会出现白屏的效果。

所以这里程序加载有个顺序,当打开一个 Activity 的时候,并且这个 Activity 所属的 Application 还没有运行,系统会首先为这个 Activity 创建一个进程,创建进程的时候就会调用 Application 的 onCreate 方法。进程的创建和 onCreate 内部的初始化是需要时间的,如果这个时候过长,没有任何反应的话,那么对于用户来说是不不知道的,用户还以为自己没有点到呢,所以很显然是不可能在原页面等待加载的,那么这个时候就有了 StartingWindow(PerviewWindow)的出现,StartingWindow 出现在应用程序进程创建并且初始化完成之前,是个临时的窗口,对应的 WindowTypeTYPE_APPLICATION_STARTING 作用就是告诉用户,系统已经收到我们的操作了,正在对程序进行初始化,只要初始化完毕后就会移除这个窗口。

所以其实我们看到的白屏或者黑屏就是 StartingWindow,那么为什么是白色或者黑色呢?我们一般都会给我们的 Application 和 Activity 设置 Theme,系统就会根据我们所设置的 Theme 来决定 StartingWindow 的颜色。我们都知道 Window 布局的顶层是 DecorView,而 StaringWindow 显示的是一个空的 DecorView,只是这个 DecorView 会应用我们的这个 Activity 所指定的 Theme。我们默认的 Theme 是 @android:style/Theme.Light 的话,这个时候就会产生白屏了。黑屏就是应用了 @android:style/Theme.Black,好了到这里我们就彻底明白为什么会出现白屏或者黑屏了。再顺便说一下 Activity 布局的绘制顺序:

  1. 绘制背景
  2. 绘制 View 本身的内容
  3. 绘制子 View
  4. 绘制修饰内容(例如滚动条)

解决黑白屏问题

通过上面我们已经知道为什么会出现这个问题了,那么解决起来就很简单了,只需要给启动页的样式添加一个背景就可以了,这样就达到了秒开的效果了!

<style name = "SplashThem" parent = "AppTheme">
    <item name = "android:windowBackground">@drawble/splash</item>
  <item name = "android:windwoFullscreen">true</item>
</style>
设置的这个背景要和我的启动页搭配起来就行了!
个人号.png 更多分享,公众号

参考:https://blog.csdn.net/yanzhenjie1003/article/details/52201896

相关文章

  • Android性能优化-App启动优化

    一、App启动优化 问题如下:1、App启动白屏、或者黑屏2、App启动时间长 二、解决方法1 通常的解决办法都是...

  • 解决 APP启动白屏黑屏问题

    闪屏页简介 闪屏页,我们手机上的每个 APP 几乎都有自己的闪屏页,就是在真正进入程序前,会有一个页面停顿几秒钟。...

  • 一. Android 启动时间优化

    1)启动页白屏及黑屏解决?2)启动太慢怎么解决?3)怎么保证应用启动不卡顿?4)App启动崩溃异常捕捉5)统计启动...

  • 解决 flutter启动闪现白屏/黑屏

    修改主题解决闪现白屏/黑屏 问题描述: 市场上有很多应用,在启动的时候,会出现闪现黑屏或白屏,有的应用却没有。究其...

  • App启动页面优化

    一、存在白屏问题 1.1 问题描述 出现问题描述 android app启动页面黑屏的问题,android开发ap...

  • ionic2常见问题及解决方案

    ionic2常见问题及解决方案 一、app启动白屏的问题 ​ app启动后大概有几秒的白屏,才会显...

  • Android 8.0启动app崩溃或者无反应

    当我们为了解决启动页黑屏或者白屏而在主题里面添加了 但是这种方式会使app点击卡顿1-2秒来进入主界面(解决黑白屏...

  • android启动大图Logo拉伸解决

    APP启动图为了解决白屏、黑屏的问题,最简答的都会设置一张背景图,背景图全宽全高,可能会遇到拉伸的问题,解决思路就...

  • 关于闪屏页使用了图片背景内存中不会释放

    一、启动页面 众所周知,APP在启动的时候,会有一小段时间(白屏、黑屏),系统会预读APP的主题,所以有的黑屏,有...

  • Android项目优化-冷启动优化

    APP启动优化主要解决app启动缓慢,白屏半天的问题。 app启动方式主要为:冷启动和热启动 冷启动:当进程关掉,...

网友评论

    本文标题:解决 APP启动白屏黑屏问题

    本文链接:https://www.haomeiwen.com/subject/bmtmzqtx.html