Status Update
Comments
il...@google.com <il...@google.com> #2
1.3.0-alpha01
as per
kc...@slack-corp.com <kc...@slack-corp.com> #3
il...@google.com <il...@google.com> #4
This code path only runs when you've added a retained fragment after the state is saved (i.e., with commitAllowingStateLoss()
or commitNowAllowingStateLoss()
). You should avoid doing that.
kc...@slack-corp.com <kc...@slack-corp.com> #5
il...@google.com <il...@google.com> #6
We've looked into this more thoroughly and deemed that there's a bit too much risk on cherry picking the change from 1.2.X
release as it relies on a larger number of infrastructural changes that are unique to the Fragment 1.3.X
release.
As there is a workaround available (don't add retained fragments after the state is saved) and it has been fixed already in all Fragment 1.3.X
releases, I'll mark this as Obsolete.
Description
Versions: fragment 1.2.2, appCompat 1.1.0
OS versions: 60+% on Android 10, 30+% on Android 9.
Devices: 70+, does not seem to matter.
No sample project to share.
java.lang.RuntimeException: Unable to start activity ComponentInfo{...}: java.util.ConcurrentModificationException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5279)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5187)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1441)
at java.util.HashMap$ValueIterator.next(HashMap.java:1470)
at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:29)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:6)
at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:4)
at [redacted].onCreate([redacted].java:6)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5279)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5187)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)