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 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

インスタンス状態バンドルのタグの命名に関する公式ドキュメントのメモは見つかりませんでした。誰かがそこで何が起こったのか説明してもらえますか?

4

0 に答える 0