关于android app启动页白屏黑屏和华为手机启动页图片跳跃闪屏的问题

本文详细介绍了APP启动时出现白屏和黑屏的原因及其解决办法,包括隐藏预加载页面、设置透明背景及配置一致的启动页背景图片等方法,并针对特殊情况提供了额外解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、产生原因   

        关于点击app图标出现白屏和黑屏的产生原因,首先要说的就是app的启动模式:冷启动(cold start),暖启动(warm start),热启动(lukewarm start)。

  • 冷启动:是指进程从无到有的过程。因为要进行页面初始化,所以相对其他两个启动方式,消耗的时间是相对比较多的。
  • 热启动:是指之前的进程还在,在之前进程的基础上创建 Activity 的过程。

        我们遇到的白屏黑屏问题就是在app的冷启动时期产生的,一般就是app从后台移除再点击进入的时候。因为在app冷启动的时候需要做一些了初始化操作application、LAUNCHER。在一些列初始化的时间里系统为通知用户已进入app会弹出一个预加载页面告诉app已经启动。如果未做任何处理就会出现白屏和黑屏的现象。

2、解决方式

解决方式主要是对启动页Theme的处理

<activity
    android:name=".LogoActivity"
    android:theme="@style/StartTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

(1)隐藏预加载页面(不推荐)

既然白屏的原因就是app预加载页面弹出造成的,我们可以把它隐藏掉。

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowBackground">@android:color/white</item>
    </style>

把windowDisablePreview设置成true,这样就不会出现白屏和黑屏的问题然而会使我们点击app的时候会短暂的停留在手机屏幕一段时间然后直接进入LAUNCHER_ACTIVITY,造成一种手机卡顿的现象,在性能差的手机上更明显。(360手机助手就是这种现象)

(2)为启动页Theme设置一个透明背景(不推荐)

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowBackground">@android:color/white</item>
    </style>

把windowIsTranslucent设置成true,类似于把预加载页面隐藏了,最终效果类似于隐藏预加载页面。

(3)给启动页Theme设置一个和启动页一样的背景图片

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@drawable/layer_launcher</item>
        <item name="android:windowFullscreen">true</item>
    </style>
为解决不同屏幕手机图片被拉伸的问题(华为手机虚拟键盘),我们创建一个layer-list drawable文件。这也解决了启动页图片跳跃的问题。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/background" />
    </item>
</layer-list>

同时注释掉// setContentView(R.layout.activity_logo);,这样就保证了预加载页面和启动页一致。

3、特殊情况

做完上面的操作基本上已经解决了闪屏的问题。当在观察华为手机时,再从预加载页面切到LAUNCHER_ACTIVITY时会闪一下(淘宝启动页偶尔就会出现)。原因可能是在LAUNCHER_ACTIVITY的onCreate中执行了一些反序列化和网络请求等耗时操作。我的解决方式是创建一个Handle延迟一秒执行初始化操作。

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mSharedPreferences = getSharedPreferences("phone", Context.MODE_PRIVATE);
                //友盟
                MobclickAgent.setDebugMode(true);
                MobclickAgent.enableEncrypt(true);
                mRequestQueue = Volley.newRequestQueue(LogoActivity.this);
                getNewVersion();
            }
        },1000);
到此问题基本上就解决完了,要是有新的问题可以提一下。
 

### devecostudio 模拟器闪屏解决方案 对于 DevEco Studio 的模拟器出现闪屏问题,可以参考 Android Studio 中类似的解决思路[^3]。以下是针对该问题的具体分析可能的解决方案: #### 可能的原因 DevEco Studio 是华为开发的一款集成环境工具,主要用于鸿蒙系统的应用开发。其内置的模拟器可能会因为硬件加速配置不当、虚拟机设置错误或者特定版本兼容性问题而引发闪屏现象。 --- #### 解决方案 ##### 方法一:调整模拟器的图形渲染模式 尝试更改模拟器使用的 GPU 渲染方式为 **Software** 而不是默认的 **Hardware Acceleration**。 1. 打开 DevEco Studio 并进入模拟器管理界面。 2. 编辑当前正在使用的设备配置文件。 3. 在高级选项中找到“Graphics”,将其改为 **Software GL+** 或其他可用选项。 4. 应用更改并重启模拟器。 这种方法通过禁用硬件加速来减少因显卡驱动不匹配引起的闪烁问题。 ##### 方法二:重新创建模拟器设备 如果某些预设的模拟器设备存在问题,则可以通过删除旧设备并新建一个正常工作的替代品来解决问题。 1. 删除现有的异常行为的模拟器实例。 2. 创建一个新的虚拟设备,在此过程中注意选择支持最新 API 版本以及具备良好测试记录的标准机型。 3. 避免选用带有 Play Store 图标的特殊定制版模型(这些通常仅适用于 Google 生态),而是挑选基础款型作为目标运行平台。 这种操作能够规避由于个别型号特有的缺陷所造成的显示障碍。 ##### 方法三:更新或修复主机端依赖组件 确保本地计算机上的必要辅助库处于最新状态也是至关重要的一步。 - 更新 Intel HAXM 至最新稳定发行号; - 安装最新的显卡驱动程序以获得更好的性能表现与稳定性保障; - 对于 Windows 用户来说,还应该核查 DirectX 是否已升级到建议等级之上[^1]。 此外,定期检查官方文档获取关于如何优化仿真体验的最佳实践指南同样有助于预防此类故障的发生。 ##### 方法四:切换至真实物理装置调试 当所有软件层面的努力均未能奏效之时,转而采用实体移动终端来进行项目验证不失为一种务实的选择。连接经授权认证过的安卓手机或其他智能产品接入IDE之后即可开展实际条件下的功能检验工作。 这种方式绕过了任何潜在的桌面级仿真的局限性,从而提供更为可靠的结果反馈途径[^5]。 --- ```xml <!-- 示例代码片段用于修改 App 主题 --> <style name="CustomTheme" parent="@android:style/Theme.Holo.Light"> <!-- 设置背景颜色防止空白屏幕 --> <item name="android:windowBackground">@color/black</item> <!-- 移除标题栏 --> <item name="android:windowNoTitle">true</item> <!-- 实现全屏效果 --> <item name="android:windowFullscreen">true</item> </style> ``` 上述 XML 文件展示了怎样自定义应用程序的主题样式以便改善启动过程中的视觉过渡效果,这也可以间接缓解部分类型的短暂亮光干扰状况。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值