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

React Native应用遭遇SuperNotCalledException崩溃求助

解决SuperNotCalledException崩溃问题

你遇到的问题根源是将super.onCreate(savedInstanceState)包裹在try-catch块中,当super.onCreate()抛出Fragment.InstantiationException被捕获后,Activity的初始化流程未完成,系统判定super.onCreate()未被正确调用,从而触发SuperNotCalledException。

修复方案

修改onCreate方法的异常处理逻辑,确保要么让super.onCreate()完整执行,要么在捕获异常后终止当前Activity生命周期,避免系统校验:

@Override
protected void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
    } catch (androidx.fragment.app.Fragment.InstantiationException e) {
        // 用Android日志替代System.out,便于调试排查
        android.util.Log.e("MainActivity", "Error loading app from background", e);
        // 重启当前Activity,中断异常流程,避免系统触发SuperNotCalledException
        Intent intent = getIntent();
        finish();
        startActivity(intent);
        // 终止后续代码执行,防止未完成的初始化引发其他问题
        return;
    }

    String rootDir = MMKV.initialize(this);
    new au.com.credsys.planability.RNDynamicSplash(this);

    if (isTablet()) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

额外说明

  • 禁止将super.onCreate()包裹在try-catch中,Android系统对Activity生命周期方法的调用完整性有严格校验,中断super.onCreate()的执行流程会触发系统级异常。
  • 改用重启Activity的方式处理Fragment.InstantiationException,既解决了后台唤醒时的崩溃问题,又符合Android生命周期规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:00:05