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

Android 12(API Level 31)应用卡在Splash Screen启动页问题求助

问题排查与修复方案

1. 升级SplashScreen依赖版本

你当前使用的1.0.0-alpha01属于早期预览测试版,存在大量未修复的原生bug,是启动页卡住的高频诱因,先替换为官方稳定版:

implementation 'androidx.core:core-splashscreen:1.0.1'

2. 补充Splash主题缺失配置

你的SplashTheme缺少启动页结束后切换到应用正常主题的配置项,系统无法完成启动页到应用页面的过渡,修改如下:

<style name="SplashTheme" parent="Theme.SplashScreen">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowSplashScreenAnimatedIcon">@drawable/splash</item>
    <!-- 新增:配置启动页结束后切换的应用正常主题 -->
    <item name="postSplashScreenTheme">@style/你的App正常使用的主主题名</item>
</style>

3. 修正StartupActivity逻辑

当前存在两个核心问题:

  • 无手动控制启动页退出逻辑的前提下,空内容的Activity无法完成第一帧绘制,系统会一直保留启动页
  • 跳转逻辑没有和启动页退出时机绑定
    修改后的代码如下:
// 标记是否已经完成跳转
private var isNavigated = false

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val splashScreen = installSplashScreen()
    // 手动控制启动页保持可见的条件
    splashScreen.setKeepOnScreenCondition {
        !isNavigated
    }
    // 即使无业务布局,也可设置一个空白布局保证页面绘制完成
    setContentView(R.layout.activity_startup)
}

override fun onStart() {
    super.onStart()
    proceedNavigation()
}

private fun proceedNavigation() {
    // 保留原有跳转逻辑,跳转完成后修改标记位即可触发启动页关闭
    // 示例:跳转主页后执行
    // isNavigated = true
    // finish()
}

4. 其他注意项

  • 确保应用主主题继承自Theme.MaterialComponents、Theme.AppCompat这类兼容主题,不能使用原生Framework的主题
  • Android 12及以上设备无需单独做系统级启动页适配,AndroidX兼容包会自动处理不同版本的展示逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:54:02