We got this stack trace from Google Play:
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: android.os.BadParcelableException:
at android.os.Parcel.readParcelableCreator(Parcel.java:2545)
at android.os.Parcel.readParcelable(Parcel.java:2471)
at android.os.Parcel.readValue(Parcel.java:2374)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2808)
at android.os.Parcel.readSparseArray(Parcel.java:2077)
at android.os.Parcel.readValue(Parcel.java:2431)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2727)
at android.os.BaseBundle.unparcel(BaseBundle.java:269)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:910)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1153)
at android.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2038)
at android.app.FragmentController.dispatchCreate(FragmentController.java:166)
at android.app.Activity.onCreate(Activity.java:1041)
at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(SourceFile:51)
at android.support.v4.app.FragmentActivity.onCreate(SourceFile:319)
at android.support.v7.app.AppCompatActivity.onCreate(SourceFile:88)
Looking at line 2545 in Parcel.java, we found this:
2544 if (creator == null) {
2545 throw new BadParcelableException("Parcelable protocol requires a "
2546 + "non-null Parcelable.Creator object called "
2547 + "CREATOR on class " + name);
We do not implement Activity.onSaveInstanceState(Bundle) in any of our Activities in the stack trace. We do have it in other parts of our application, but we only save Strings and one Serializable object.
The only clue we have is that this exception is happening only in the Activity which has an embedded YouTube player. We searched for this exception in conjunction with the YouTube player, but only found it related to a ClassNotFoundException. This second exception we were able to reproduce, and confirmed that it is from a different line in Parcel.java (2536).
I know we could just catch the exception and restart the Activity to prevent the Force Close dialog from showing up, but we would prefer to actually prevent it from happening.
Has anyone seen this stack trace and know what is going on?