AndroidRuntime Failure saving state: active fragment XXXX was removed from the FragmentManager

本文介绍了一个关于APK间唤起导致闪退的问题及解决方案。问题出现在被唤起APK的LauncherActivity中,由于fragment管理不当引发错误。通过调整Intent的构造方式,直接指定目标组件,成功避免了问题。

使用apk A 唤起 apk B时 使用PackageManager进行唤醒操作

        PackageManager packageManager = getPackageManager();
        Intent intent = packageManager.getLaunchIntentForPackage("com.xxx.xxx");

        if(intent != null) {
           startActivity(intent);
        }

apk B发生闪退,log显示

01-01 02:42:40.418  9356  9356 E AndroidRuntime: java.lang.IllegalStateException: Failure saving state: active fragment2{866132d (3063406e-5e0f-4ddc-9b3b-763c96d930c1) id=0x7f0a015d android:switcher:2131362141:1} was removed from the FragmentManager
01-01 02:42:40.418  9356  9356 E AndroidRuntime: 	at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2337)
01-01 02:42:40.418  9356  9356 E AndroidRuntime: 	at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:151)
01-01 02:42:40.418  9356  9356 E AndroidRuntime: 	at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:513)
01-01 02:42:40.418  9356  9356 E AndroidRuntime: 	at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:533)
01-01 02:42:40.418  9356  9356 E AndroidRuntime: 	at android.app.Activity.performSaveInstanceState(Activity.java:1549)

经分析,原因在于apk B的Laucher Activity中fragment出现了某些问题导致的。通过报错信息一路跟踪发现起始操作在于onCreate方法的

super.onCreate(savedInstanceState);

一路跟踪至FragmentManagerImpl 2394行。猜测原因在于Intent调起apk时发生了一些问题。

最终通过换了一种调起apk方式解决问题

Intent intent = new Intent();
ComponentName componentName = new ComponentName("com.xxx.xxx", "com.xxx.xxx.xxx");
intent.setComponent(componentName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值