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

Android首次启动SplashActivity的onCreate被调用两次的解决方法

解决SplashActivity首次启动onCreate被调用两次的问题

以下是针对该问题的排查方向和解决方案:

  • 设置Activity启动模式
    给SplashActivity添加singleTask启动模式,避免系统重复创建实例,修改Manifest中的Activity配置:

    <activity
        android:name=".activities.splash.SplashActivity"
        android:exported="true"
        android:screenOrientation="portrait"
        android:launchMode="singleTask"> <!-- 添加这一行 -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
  • 排查Firebase组件影响
    项目中引入的Firebase Config和Play Services Measurement可能会触发进程重启。可以暂时移除这两个依赖,测试是否还会出现启动两次的情况:

    // 暂时注释这两行
    // implementation("com.google.firebase:firebase-config:22.0.1")
    // implementation("com.google.android.gms:play-services-measurement-api:22.1.2")
    

    如果问题消失,说明是Firebase初始化导致的,可以将Firebase的初始化延迟到Splash之后的主Activity中执行。

  • 清理备份相关配置
    虽然设置了android:allowBackup="false",但保留的fullBackupContent可能存在潜在影响,尝试移除该配置:

    <application
        android:allowBackup="false"
        android:banner="@mipmap/ic_banner"
        <!-- 移除或注释这一行 -->
        <!-- android:fullBackupContent="@xml/backup_rules" -->
        ...>
    
  • 优化主题配置
    检查应用主题@style/Theme.VideoPlayer,确保添加必要的配置变更监听,避免系统因配置变化重启Activity:

    <style name="Theme.VideoPlayer" parent="...">
        ...
        <item name="android:configChanges">orientation|screenSize|keyboardHidden</item>
    </style>
    
  • 添加重复启动拦截逻辑
    在SplashActivity中添加标记,避免重复创建实例:

    private var isInitialized = false
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        if (isInitialized) {
            finish()
            return
        }
        isInitialized = true
    
        binding = ActivitySplashBinding.inflate(layoutInflater)
        window.statusBarColor = ContextCompat.getColor(this, R.color.white)
        setContentView(binding.root)
        Log.d("LOGXX", "onCreate: Splash Activity Create")
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:28:13