Android apk第一次安装白屏(冷启动白黑屏解决)

这里写图片描述

在我们开发中,肯定会遇到白屏和黑屏问题,特别是第一次安装APK然后打开APK就会看到这个效果,那就是说冷启动的时候出现这个想过就是最明显不过了。

这里写图片描述

什么是冷启动

冷启动的定义

冷启动就是在启动该应用前,系统中没有该引用的任何进程信息。
(第一次打开应用、杀死了进程再打开、时间最长)

冷启动/热启动的区别

热启动:用户使用返回键推出应用,然后马上又重新启动应用

区别

冷是没有创建过初始化过,热是已经初始化再打开

为什么会白屏黑屏?

原因:

1、不同的设备可能白屏黑屏显示的时间长短不同,设备硬件较差的时间都会比较长,这显然影响用户体验。

2、当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?

如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,怎么办?这就有了Starting Window的概念,也可以称之为Preview Window。

系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这步操作时,系统会根据我们设置的Theme来指定它的Theme主题颜色。Window布局的顶层是DecorView,StartingWindow显示一个空DecorView,我们在Style中的设置就决定了显示的是白屏还是黑屏。

Starting Window就是一个用于在应用程序进程创建并初始化成功前显示的临时窗口,拥有的Window Type是TYPE_APPLICATION_STARTING。在程序初始化完成前显示这个窗口,以告知用户系统已经知道了他要打开这个应用并做出了响应,当程序初始化完成后显示用户UI并移除这个窗口。

扫描二维码关注公众号,回复: 1055819 查看本文章

显示白屏或者黑屏,是由你的启动Activity或者Application来决定的。如果你使用的是Light主题,那么就可能出现白屏;如果你使用的是Black主题,那么就可能出现黑屏。当你设置Light或者Black主题时,Starting Window显示的就是你启动Activity的android:windowBackground属性,所以才会出现白屏或者黑屏的情况。

解决方法两种

第一种使用图片进行过渡

  <!-- 防止欢迎页白屏或者黑屏,设置图片 -->
    <style name="SplashTheme" parent="AppTheme">
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="android:windowFullscreen">true</item>
        <item name="windowNoTitle">true</item>
    </style>

第二种直接设置透明

<style name="SplashTheme" parent="AppTheme">
        <item name="android:windowIsTranslucent" >true</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowFullscreen">true</item>
        <item name="windowNoTitle">true</item>
    </style>

猜你喜欢

转载自blog.csdn.net/u013933720/article/details/80289232