フォーム データを保存するときにバンドル オブジェクトを多用する Android のかなり複雑なデータ編集アクティビティを使用しています。
一般的に、これは非常にうまく機能し、データの損失は経験していません。ただし、直接の原因が見つからないように見える奇妙な断続的なバグがあります。
ユーザーがプロファイル画像を選択できるようにするために (startActivityForResult を使用して) ギャラリーにインテントを送信すると発生します。小さな (96x96) ビットマップがバンドルで返され、このデータをプロファイルに保存します。これは約 90% の確率で問題なく動作しますが、場合によっては、バンドルに保存された画像を返す代わりに、解析できないバンドルが返されます。これは、デバイスをギャラリー選択モードで数分間放置すると、かなり頻繁に発生します。(> 5 分のアイドリング)。
バンドルの機能にアクセスしようとすると、次の実行時例外が発生します。
java.lang.RuntimeException: Parcel android.os.Parcel@44a06078: オフセット 392 で不明な型コード -8913000 をアンマーシャリングしています
注意事項: o このエラーが発生すると、編集アクティビティが破棄され、再作成する必要があるように見えます。(エラーが発生する前に、onCreate、onStart、および onRestoreInstanceState (クラッシュの発生場所) に進みます)。o これにより、「onActivityResult」セクションがスキップされるようです (または、少なくともそこまで到達することはありません。 o onRestoreInstanceState で取得されたバンドル オブジェクトは null ではありませんが、オブジェクトへのその他のアクセス (空かどうかのチェックを含む) は、この結果になります)。 o バンドルのソース コードを確認したところ、格納された int フラグを使用して内部型チェックを実行しているバンドルがクラッシュの原因のようであることがわかりました. int フラグがリストにない型を検出すると、エラーが発生します (そのため、これまで一貫して -8913000 でした。 o これまでのところ、このエラーは froyo でしか見たことがありません (2.2)。
誰かがこれと同様のエラーに遭遇しましたか? 次にどこを見るべきかについて誰か提案がありますか?
それまでの間、投稿可能なコードのこのセクションのスリム化されたバージョンをまとめて、問題が再現されるかどうかを確認します。