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

Android启动时MainActivity的onCreate被两次调用该如何解决?

问题解决方案

该问题完全可解决,首先明确Android中Activity的onCreate被触发两次的常见原因多为配置变更导致的Activity销毁重建、启动模式异常导致多实例创建、ROM冷启动优化触发重建三类,具体处理方案如下:

通用兜底方案(覆盖所有触发场景)

利用Activity重建时onCreate的入参savedInstanceState不为空的特性,仅在首次创建Activity时执行跳转逻辑,重建时直接跳过业务逻辑即可,示例代码如下:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_title);

    Log.d("myname", "test");

    // 仅首次创建时执行业务逻辑,重建场景直接跳过
    if (savedInstanceState == null) {
        // 读取SharedPreferences判断首次启动、延时跳转逻辑都放在该分支内
        boolean isFirstLaunch = getSharedPreferences("app_config", MODE_PRIVATE)
                .getBoolean("is_first_launch", true);
        // 提前标记首次启动状态已变更,避免极端场景下重复读写
        getSharedPreferences("app_config", MODE_PRIVATE)
                .edit()
                .putBoolean("is_first_launch", false)
                .apply();
                
        new Handler(Looper.getMainLooper()).postDelayed(() -> {
            Intent targetIntent = isFirstLaunch ? 
                    new Intent(this, GuideActivity.class) : 
                    new Intent(this, MainActivity.class);
            startActivity(targetIntent);
            // 跳转后立即关闭闪屏页,避免二次实例触发重复跳转
            finish();
        }, 2000); // 延时时长可按需调整
    }
}

针对性优化方案

  • 拦截配置变更避免重建:在AndroidManifest.xml中给闪屏页的Activity节点添加configChanges属性,避免常见配置变更触发Activity销毁重建:
    <activity
        android:name=".SplashActivity"
        android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
  • 校验启动逻辑:排查是否存在多处调用闪屏页启动Intent的代码,避免重复触发启动请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:02