Androidアプリ開発で、あるアクティビティから別のアクティティへstartActivityを利用して遷移する場合、IntentのputExtra関数を使うとアクティティ間の遷移で値を引き継ぐことができます。

これを利用してカメラで撮影した画像のデータをSerializableを継承したクラスに格納して引き継ごうとしたのですが、いざ実行したら「TransactionTooLargeException」が発生して強制終了。

ここでは、このエラーの原因と対処法について紹介したいと思います。

TransactionTooLargeExceptionが発生した原因

どうやらサイズが大きいデータをputExtraに格納して引き継ごうとするとこのエラーが発生するようです。詳細はここを参照。

サイズは1Mb(125kB)が上限のようで、私の場合はカメラの画像データを格納したためこのエラーが発生しました。

対象法

対処法ですが、putExtraで渡そうとしていたデータをDBかストレージに一度書き出して、その参照情報(ファイル名など)をputExtraに渡すようにすれば解決します。