gpt4 book ai didi

android - 无法在 Android api >=24 上使用 java.lang.IllegalArgumentException 恢复 Activity

转载 作者:IT王子 更新时间:2023-10-28 23:41:40 25 4
gpt4 key购买 nike

在运行版本 7.07.1.18.0.0 的设备上,我的应用发生崩溃,堆栈跟踪如下:

Fatal Exception: java.lang.RuntimeException: Unable to resume activity {xxx/xxx.views.activities.HomeActivity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3788)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2991)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1697)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:6600)
at android.app.Activity.isTopOfTask(Activity.java:6142)
at android.app.Activity.onResume(Activity.java:1331)
at android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:485)
at xxx.views.activities.BaseActivity.onResume(BaseActivity.java:50)
at xxx.views.activities.HomeActivity.onResume(HomeActivity.java:364)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1277)
at android.app.Activity.performResume(Activity.java:7058)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3765)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2991)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

我在报告行上的代码很简单:

// HomeActivity class
@Override
public void onResume() {
mPresenter.onResume();
super.onResume();

renderView();
}

// BaseActivity class
@Override
protected void onResume() {
super.onResume();
// some other code
}

我对此进行了一些挖掘,发现了类似的 question .

由于抛出的 IllegalArgumentException 不包含详细消息,我将尝试按照建议添加额外的日志 here .

同时请感谢任何帮助!

最佳答案

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

这是一个链式异常,所以检查 e.getCause() stacktrace -> 直到 cause 为空

如果您找不到它,请查看调用 try block 的 Activity 线程中的方法:

try {
r.activity.onStateNotSaved();
r.activity.mFragments.noteStateNotSaved();

if (r.pendingIntents != null) {
deliverNewIntents(r, r.pendingIntents);
r.pendingIntents = null;
}

if (r.pendingResults != null) {
deliverResults(r, r.pendingResults);
r.pendingResults = null;
}

r.activity.performResume();

// If there is a pending local relaunch that was requested
// when the activity was
// paused, it will put the activity into paused state
// when it finally happens.
// Since the activity resumed before being relaunched,
// we don't want that to happen,
// so we need to clear the request to relaunch paused.

for (int i = mRelaunchingActivities.size() - 1; i >= 0; i--) {
final ActivityClientRecord relaunching =
mRelaunchingActivities.get(i);

if (relaunching.token == r.token
&& relaunching.onlyLocalRequest &&
relaunching.startsNotResumed) {
relaunching.startsNotResumed = false;
}
}
}

您需要在以下位置搜索原因:

  • Activity.onStateNotSaved();
  • Activity.mFragments.noteStateNotSaved();
  • Activity.performResume();
  • 最后的 Activity.onNewIntent()
    Caused by java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1697)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.ActivityManagerProxy.isTopOfTask (ActivityManagerNative.java:6600)
at android.app.Activity.isTopOfTask(Activity.java:6142)
at android.app.Activity.onResume(Activity.java:1331)

最好的办法是解决这个问题:

rjava.lang.IllegalArgumentException on startActivity(intent,bundle animantion)

关于android - 无法在 Android api >=24 上使用 java.lang.IllegalArgumentException 恢复 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47790415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com