パーセルのアンマーシャリング中に奇妙なクラッシュに遭遇し、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 Dev Tools で強制しました)、後で再起動するとクラッシュします。エラーは次のようになります。
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
からTRACK
に変更することでしたappname:TRACK
。
インスタンス状態バンドルのタグの命名に関する公式ドキュメントのメモは見つかりませんでした。誰かがそこで何が起こったのか説明してもらえますか?