Подтвердить что ты не робот

Java.lang.RuntimeException: невозможно возобновить работу с помощью java.lang.IllegalArgumentException

Недавно я иногда получал это исключение, когда MainActivity вызывал onResume().

java.lang.RuntimeException: Unable to resume activity {com.qau4d.c35s3.androidapp/com.xxx.XXX.XXX.MainActivity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3400)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1510)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1687)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:5475)
at android.app.Activity.isTopOfTask(Activity.java:5961)
at android.app.Activity.onResume(Activity.java:1252)
at com.qau4d.c35s3.androidapp.onResume(XActivity.java:29)
at com.qau4d.c35s3.androidapp.onResume(MainActivity.java:196)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
at android.app.Activity.performResume(Activity.java:6768)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377)

Оба в MainActivity и супер классе XActivity, только super.onResume();. Это действительно странно, чтобы получить это исключение после долгого нормального развития. Я проверил некоторый относительный справочный материал, но ничего не получилось.

4b9b3361

Ответ 1

Недостаточно информации в вашем вопросе, чтобы определить причину java.lang.IllegalArgumentException. К сожалению, андроид ActivityThread не регистрирует стек из этого исключения, и сообщение об ошибке кажется пустым.

Однако, похоже, есть путь вперед. Исключение обрабатывается следующим кодом в методе ActivityThread::performResumeActivity:

        } catch (Exception e) {
            if (!mInstrumentation.onException(r.activity, e)) {
                throw new RuntimeException(
                    "Unable to resume activity "
                    + r.intent.getComponent().toShortString()
                    + ": " + e.toString(), e);
            }
        }

Если вы зарегистрируете класс 1 для инструментария для своей деятельности, следует использовать метод onException для регистрации stacktrace для причинного исключения.

Это не решит проблему (!), но это поможет вам приблизиться к решению.


1 - Google для "Android-инструментов onException".