我在拆包包裹时遇到了一次奇怪的崩溃,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_TRACK
from的值更改TRACK
为appname:TRACK
。
我在官方文档中找不到关于实例状态包标签命名的任何注释。有人可以向我解释那里发生了什么吗?