我们从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)
查看Parcel.java中的第2545行,我们发现:
2544 if (creator == null) {
2545 throw new BadParcelableException("Parcelable protocol requires a "
2546 + "non-null Parcelable.Creator object called "
2547 + "CREATOR on class " + name);
我们没有在堆栈跟踪的任何活动中实现Activity.onSaveInstanceState(Bundle)。我们在应用程序的其他部分有它,但我们只保存字符串和一个Serializable对象。
我们唯一的线索是,此异常仅发生在具有嵌入式YouTube播放器的Activity中。我们与YouTube播放器一起搜索了这个例外,但只发现它与ClassNotFoundException有关。我们能够重现的第二个例外,并确认它来自Parcel.java(2536)中的另一行。
我知道我们可以捕获异常并重新启动Activity以防止强制关闭对话框出现,但我们宁愿实际阻止它发生。
有没有人看过这个堆栈跟踪并知道发生了什么?