广告也精彩
目录

前言

Android系统上,当启动应用时存在闪白屏或者黑屏,这种问题很常见。

产生原因:

当系统启动一个APP时,zygote进程会首先创建一个新的进程去运行这个APP,但是进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,因为用户会以为没有点到APP而再次点击,这极大的降低用户体验,Android需要及时做出反馈去避免这段迷之尴尬。于是,Android系统根据你的AndroidManifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。

而这个黑(白)屏正式的称呼应该是Preview Window,即预览窗口。

总结

三种方式都可以解决闪黑屏或白屏问题,但各有优点和缺点。

  1. 设置android:windowBackground,我的应用不存在启动logo,因此这个对我的应用不行。
  2. 设置android:windowIsTranslucent,除了存在卡几秒响应,还会导致其他交互的Activity的生命周期异常,由于部分逻辑依赖Activity周期,因此对于我的应用不行。
  3. 设置android:windowDisablePreview 开历史倒车,存在卡顿几秒,这个是目前三个方式中比较合适的(相比而言)

由于使用场景不一,采用的方式不用,这个自己舍取。

正文

根据自己经验和网上网友整理,下面我们说说存在的解决方式。

windowBackground

这个是设置主题样式窗口的背景图,如下

    <style name="media_default_theme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/default_bg</item>
    </style>

设置一张窗口的背景图,会让用户感觉非常快。

优点: 可以解决闪黑屏和白屏问题,同时让人觉得启动快。

缺点:如果不允许设置启动窗口背景就麻烦了(勉强算一个缺点)

windowIsTranslucent

这个是设置窗口为透明窗口

    <style name="media_default_theme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
		<item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
    </style>

这样也可以解决黑屏或白屏问题。

优点: 可以解决闪黑屏和白屏问题

缺点: (1)点击后,响应慢了一点,让人觉得启动卡顿(2)会导致切换时其他Activity生命周期异常

会导致切换时其他Activity生命周期异常

上面说了,透明窗口会导致启动的Activity的周期异常。

A Activity : 主题没有透明属性

B Activity : 主题带有透明属性

先启动A Activity,然后启动B Activity,可以通过B Activity启动(或者其他方式)启动A Activity。

下面是A Activity生命周期的打印日志:

  onNewIntent :
  onResume :
  onPause:
  onResume:

上面可以看出,onResume启动了两次,所以如果项目中有依赖生命周期的功能话就存在一定的问题。

windowDisablePreview

这个属性就是禁止窗口预览动画,就是开历史倒车。

    <style name="media_default_theme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
		<item name="android:windowDisablePreview">true</item>
    </style>

优点: 可以借闪黑屏和白屏问题

缺点:点击后,响应慢了一点,让人觉得启动卡顿。

参考文章

  1. Android启动页黑屏及最优解决方案
  2. 解决启动Android应用程序时出现白屏或者黑屏的问题

 历史上的今天

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
广告也精彩

相关文章

广告也精彩

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...

网站升级中

公告

近期网站升级中,可能存在一些bug。欢迎反馈 https://www.91es.com/we.html

本站域名

本站域名 : 91es.com3xcn.com。本站邮箱 : 站长邮箱 i@oorr.cn,通知邮箱we@oorr.cn ,如有更新,请看公告 。