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

使用SplashScreen API时,如何在闪屏后动态选择启动目标Activity?

解决SplashScreen API下闪屏后跳转指定Activity的方案

核心思路:利用闪屏停留控制逻辑完成跳转判断

新的SplashScreen API默认会在installSplashScreen()后自动进入MainActivity,但可以通过控制闪屏的显示时长,在这段时间内完成"是否需要跳转其他页面"的判断,再决定后续行为。


具体实现方案

1. 用keepOnScreenCondition控制闪屏停留,异步完成判断

在MainActivity中,先初始化闪屏,再设置闪屏保持显示的条件,同时在后台执行跳转判断逻辑,完成后再结束闪屏并决定跳转或加载MainActivity内容。

class MainActivity : AppCompatActivity() {
    private var needToNavigate = false
    private val keepSplashOn = AtomicBoolean(true)

    override fun onCreate(savedInstanceState: Bundle?) {
        // 先安装闪屏,必须在super.onCreate之前
        val splashScreen = installSplashScreen()
        super.onCreate(savedInstanceState)

        // 设置闪屏持续显示的条件
        splashScreen.setKeepOnScreenCondition {
            keepSplashOn.get()
        }

        // 后台执行跳转判断逻辑(比如检查引导页状态、更新提示等)
        lifecycleScope.launch {
            needToNavigate = checkIfNeedJump()
            // 判断完成,结束闪屏
            keepSplashOn.set(false)
            
            if (needToNavigate) {
                startActivity(Intent(this@MainActivity, TargetActivity::class.java))
                finish() // 跳转后关闭MainActivity,避免返回键回到这里
            } else {
                setContentView(R.layout.activity_main) // 正常加载主页面
            }
        }
    }

    // 替换成你的实际判断逻辑,比如读取本地标记、接口请求结果
    private suspend fun checkIfNeedJump(): Boolean {
        // 模拟异步操作,比如延迟1秒模拟接口请求
        delay(1000)
        return true // 根据实际业务返回true/false
    }
}

2. 监听闪屏退出动画,在动画结束后跳转(适合需自定义过渡的场景)

如果需要在闪屏退出动画完成后再执行跳转,可以通过setOnExitAnimationListener监听动画结束事件:

splashScreen.setOnExitAnimationListener { splashView ->
    if (needToNavigate) {
        startActivity(Intent(this@MainActivity, TargetActivity::class.java))
        finish()
    }
    // 手动结束闪屏视图
    splashView.remove()
}

注意事项

  • 耗时判断逻辑必须放在异步线程(协程、Handler、AsyncTask等),避免阻塞主线程导致ANR。
  • 跳转后务必调用finish()关闭MainActivity,防止用户按返回键回到未加载的MainActivity。
  • 若判断逻辑是同步的(比如读取SharedPreferences的标记),可以直接执行判断,无需异步,但仍需保持闪屏停留逻辑的正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:48:20