0

我在拆包包裹时遇到了一次奇怪的崩溃,onCreate并且对我修复它的方式更加困惑。

我的应用程序保存这样的TrackEntity对象:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putParcelable(STATE_TRACK, mTrack);
}

并相应地加载它:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        mTrack = savedInstanceState.getParcelable(STATE_TRACK);
    }
}

STATE_TRACK定义为TRACK

虽然此代码适用于屏幕旋转更改,但当活动在后台被销毁时它会崩溃(我使用 Android 开发工具强制执行此操作)并稍后重新启动。错误如下所示:

05-17 21:17:08.366: E/AndroidRuntime(3852): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@4129f0d0: Unmarshalling unknown type code 7012471 at offset 3964
05-17 21:17:08.366: E/AndroidRuntime(3852):     at android.os.Parcel.readValue(Parcel.java:1921)
05-17 21:17:08.366: E/AndroidRuntime(3852):     at android.os.Parcel.readMapInternal(Parcel.java:2093)
05-17 21:17:08.366: E/AndroidRuntime(3852):     at android.os.Bundle.unparcel(Bundle.java:223)
05-17 21:17:08.366: E/AndroidRuntime(3852):     at android.os.Bundle.getParcelable(Bundle.java:1158)
05-17 21:17:08.366: E/AndroidRuntime(3852):     at android.app.Activity.onCreate(Activity.java:860)
05-17 21:17:08.366: E/AndroidRuntime(3852):     at myapp.ui.Activity.onCreate(Activity.java:xx)

我似乎修复它的方式是将STATE_TRACKfrom的值更改TRACKappname:TRACK

我在官方文档中找不到关于实例状态包标签命名的任何注释。有人可以向我解释那里发生了什么吗?

4

0 回答 0