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

使用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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: androidruntime: fatal exception: main是Android应用程序中的一个错误,通常是由于代码中的一个严重错误或异常引起的。这个错误会导致应用程序崩溃并停止运行。要解决这个问题,需要检查代码并修复错误或异常。常见的解决方法包括使用调试工具来查找问题,检查日志文件以获取更多信息,或者重新安装应用程序。 ### 回答2: Android开发中,androidruntime: fatal exception: main是一个常见的错误,通常是由于在主线程操作耗时任务而导致应用崩溃。 这个错误的原因可以分为两类: 1.空指针异常:这种错误通常是由于访问一个空对象或者未初始化的变量而导致的。在这种情况下,应该查找出空指针的原因,并对其进行修复或者进行判空处理。 2.主线程阻塞:这种错误通常是由于在主线程中执行耗时操作,导致应用无响应而崩溃。为了避免这种错误,应该将耗时操作放在子线程中进行执行。可以使用AsyncTask、Thread等方式进行处理。 解决这种错误的方法很多,下面列出了一些常见的解决方法: 1.检查代码是否存在空指针: 通过日志查看具体的错误信息,定位到是哪个变量或者对象引起空指针异常,然后进行判空处理或者对象初始化即可。 2.避免在主线程中执行耗时操作: 可以通过使用多线程机制将耗时操作放在子线程中执行。使用AsyncTask或者Thread等线程技术,可以解决这个问题。 3.处理异常: 可以对异常进行捕获和处理。在try-catch语句块中捕获异常,并打印日志或者给用户下发提示信息。 4.检查代码逻辑是否合理: 这个错误有时候是因为代码逻辑不合理造成的。如果一段代码逻辑不完整或者有漏洞,就有可能出现这种错误。因此,需要对代码进行逐行查看,排除可能存在的逻辑问题。 总之,在应用开发过程中,我们需要对这种错误进行及时排查和处理,以避免影响应用的正常运行。 ### 回答3: androidruntime: fatal exception: main,这是指在Android应用程序运行时出现了严重的错误,导致应用程序崩溃了。一般来说,这种错误可能是由多种因素引起的。 首先,一个主要的原因可能是代码中的错误逻辑。这意味着在应用程序的代码中可能存在缺陷或错误,导致应用程序在运行时不能正常运行。例如,可能会有空指针异常或其他类型的异常,导致应用程序崩溃。 其次,另一个常见的问题是内存管理。在Android应用程序中,需要合理地管理内存,否则就可能会引起内存泄漏或内存溢出等问题。这些问题可能会导致应用程序出现主要的异常,例如Out Of Memory异常,从而导致应用程序崩溃。 另外,还有其他可能因素,例如网络连接问题、Json解析失败、代码混淆等等,都有可能导致Android应用程序出现如此严重的错误。 为了避免这种异常的发生,开发者们应该遵循良好的开发实践,例如修复代码逻辑错误,进行合理的内存管理,安排好网络连接的超时机制等等。同时,可以通过使用调试工具来发现和解决可能存在的问题,以确保应用程序的健康运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值