Недавно мы получили sh отчеты в Crashlytics об исключении IllegalStateException, которое генерируется при вызове FramentTransaction.commit () внутри метода onResume нашего Activity. Как ни странно, эти сбои происходят только в Android 4 и 5. Трассировка стека выглядит следующим образом:
Caused by java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at androidx.fragment.app.FragmentManagerImpl.checkStateLoss(FragmentManagerImpl.java:2080)
at androidx.fragment.app.FragmentManagerImpl.enqueueAction(FragmentManagerImpl.java:2106)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:683)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:637)
...
at ...FragmentActivity.onResume(FragmentActivity.java:597)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1267)
at android.app.Activity.performResume(Activity.java:6186)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3217)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3263)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Я изо всех сил пытался придумать исправление для Cra sh, но закончилось с пустыми руками. На мой взгляд, это может произойти только тогда, когда onSaveInstanceState вызывается перед onResume, но как это вообще возможно? Есть ли способ воспроизвести это поведение?