2012年1月19日木曜日

[Android]IntentでObjectをputExtraで渡す

既に題名に関する情報はいろんな方が公開しています。
自分のためにメモ。

Activityを新しく起動した際に、Intentを介してデータを渡したい、
こういったことがよくあると思います。

ふと、Object型を渡したいって思った時にやったことが無かったので
調べてみました。

最初にこのページを見つけて以下のヒントを得ました。
Serializableインタフェースを実装することによって画面遷移でオブジェクトを渡すことが出来る

ここで疑問に思ったのがなぜSerializableである必要があるのか?

まず、Serializableについて調べてみました。
http://d.hatena.ne.jp/daisuke-m/20100414/1271228333
http://www.ne.jp/asahi/hishidama/home/tech/java/serial.html

これらのページから分かることは、Serializableはオブジェクトを直列化、
つまりStreamにながせる状態にし、かつ、デシリアライズ可能であること。

文章がへたくそですみません。

消しゴム→ねりけし(シリアライズ)→(ストリート)→消しゴム(デシリアライズ)

的なイメージ?w
さらに分かりにくくなってすみませんorz

なぜ、Serializableでなければいけないのか、
内部的にどうやってデータを渡しているのか、
Androidのソースをダウンロードして解析してみたいと思います。

モチベーションが続いてたら、続く。

【追記】
Androidソースをダウンロードして探して見た!
詳細は不明だけど、IntentにputExtrasでセットしたデータは
ファイルに落とし込まれることは分かった。

ぜひ、どなたか詳しい方教えて欲しいですorz

「ファイルに落とし込むためにSerializableでなければならない」
という結論に至った。

詳しいことは依然として不明です...orz

0 件のコメント:

コメントを投稿