You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android新Splash Screen API首次启动显示空白无图标问题求助

问题

迁移旧版含大量业务逻辑的SplashActivity至Android新Splash Screen API后,出现如下异常:

  • 首次从Android Studio启动应用或安装APK启动时,闪屏显示空白无图标
  • 从应用列表重启应用则显示正常
相关配置

v31+闪屏主题

<style name="AppSplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowSplashScreenBackground">...</item>
    <item name="android:windowSplashScreenAnimatedIcon">...</item>
    <item name="android:windowSplashScreenIconBackgroundColor">...</item>
</style>

SplashActivity核心代码

SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
splashScreen.setKeepOnScreenCondition(() -> true);
解决方案

1. 修正闪屏主题的父类

新Splash Screen API要求主题必须继承自Theme.SplashScreen(而非AppCompat主题),同时指定闪屏结束后切换的目标主题:

<style name="AppSplashTheme" parent="Theme.SplashScreen">
    <item name="android:windowSplashScreenBackground">@color/your_splash_bg</item>
    <item name="android:windowSplashScreenAnimatedIcon">@drawable/your_splash_icon</item>
    <item name="android:windowSplashScreenIconBackgroundColor">@color/your_icon_bg</item>
    <!-- 可选:设置闪屏动画时长 -->
    <item name="android:windowSplashScreenAnimationDuration">1000</item>
    <!-- 必须:指定闪屏结束后要切换的应用主题 -->
    <item name="postSplashScreenTheme">@style/YourAppTheme</item>
</style>

2. 调整installSplashScreen的调用时机

必须在super.onCreate(savedInstanceState)之前调用installSplashScreen,确保系统优先初始化闪屏资源:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // 先安装闪屏,再执行super.onCreate
    SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    // 替换为实际的业务逻辑判断,避免一直返回true锁定闪屏
    splashScreen.setKeepOnScreenCondition(() -> !isAppInitializationCompleted());

    // 执行你的业务初始化逻辑
    initAppBusinessLogic();
}

3. 检查闪屏图标资源

  • 确保windowSplashScreenAnimatedIcon使用**矢量图(VectorDrawable)**或符合Android规范的Drawable资源
  • 图标尺寸需符合闪屏图标要求(建议432x432dp),避免因资源加载失败导致空白

4. 优化启动缓存问题

若仍存在首次启动空白,可在调试时清除应用数据验证;用户端无需额外操作,修正上述配置后系统可自动正确加载闪屏资源。

原因分析
  1. 主题父类错误:使用Theme.AppCompat.NoActionBar作为父主题,导致系统无法识别新Splash Screen API的配置项,无法加载闪屏图标
  2. 调用时机错误:installSplashScreen在super.onCreate之后调用,打断了系统闪屏的初始化流程
  3. 保持条件不合理:setKeepOnScreenCondition一直返回true,导致闪屏在图标资源未完全加载时就被锁定,显示空白

内容的提问来源于stack exchange,提问作者Madhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:24:23