Skip to content

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState #1031

@zhijianz

Description

@zhijianz
  • Library version:1.3.5
  • Support-v4 version:28.0.0
  • Logs
11-11 15:05:35.162 21530 21530 E CrashHandler: UncaughtException detected: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2080)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2106)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:832)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentationMagician$3.run(FragmentationMagician.java:121)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentationMagician.a(FragmentationMagician.java:194)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.support.v4.app.FragmentationMagician.a(FragmentationMagician.java:118)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.TransactionDelegate.safePopTo(TransactionDelegate.java:574)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.TransactionDelegate.mockPopToAnim(TransactionDelegate.java:604)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.TransactionDelegate.doPopTo(TransactionDelegate.java:561)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.TransactionDelegate.access$1300(TransactionDelegate.java:32)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.TransactionDelegate$11.a(TransactionDelegate.java:289)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.queue.ActionQueue.a(ActionQueue.java:53)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.queue.ActionQueue.b(ActionQueue.java:45)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.queue.ActionQueue.a(ActionQueue.java:17)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at me.yokeyword.fragmentation.queue.ActionQueue$1.run(ActionQueue.java:37)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.os.Handler.handleCallback(Handler.java:836)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.os.Handler.dispatchMessage(Handler.java:103)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.os.Looper.loop(Looper.java:203)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at android.app.ActivityThread.main(ActivityThread.java:6275)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at java.lang.reflect.Method.invoke(Native Method)
11-11 15:05:35.162 21530 21530 E CrashHandler: 	at com.android.internal.os.ZygoteInit$Metho

最近升级support包到28包之后突然出现比较多的这种类型崩溃。之前有看到 #863 报出相似问题,看了下修复的代码的逻辑方式还是单独判断mStateSaved。


    public static boolean isStateSaved(FragmentManager fragmentManager) {
        if (!(fragmentManager instanceof FragmentManagerImpl))
            return false;
        try {
            FragmentManagerImpl fragmentManagerImpl = (FragmentManagerImpl) fragmentManager;
            return fragmentManagerImpl.mStateSaved;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    private static void hookStateSaved(FragmentManager fragmentManager, Runnable runnable) {
        if (!(fragmentManager instanceof FragmentManagerImpl)) return;

        FragmentManagerImpl fragmentManagerImpl = (FragmentManagerImpl) fragmentManager;
        if (isStateSaved(fragmentManager)) {
            fragmentManagerImpl.mStateSaved = false;
            compatRunAction(fragmentManagerImpl, runnable);
            fragmentManagerImpl.mStateSaved = true;
        } else {
            runnable.run();
        }
    }

是否会存在mStopped == true. mStateSaved == false的情况导致出现目前的崩溃

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions