2012-01-06 9 views
2

複数のアクティビティが操作する必要があるデータがあります。基本的には、読み取り専用画面と複数の編集画面があります。MonoDroid:アクティビティ間で重要でないデータを共有する

最初はインテントの文字列パラメータとしてデータを渡すことを検討しましたが、フィールドを編集した後に戻るボタンを押した場合、その変更は失われます。

異なるアクティビティ間でデータを共有する推奨方法は何ですか?各ページを切り替える前に一時ファイルに保存するだけですか?

答えて

3

これを行う最も簡単な方法は、アプリケーションのアプリケーションオブジェクト(既に存在しない場合は作成する)のように、グローバルに利用できる場所にオブジェクトを保存することです。どのように動作させるかによって、静的でもインスタンスでも構いません。

もう1つの方法は、オブジェクトをある種の文字列表現(XML、JSONなど)にシリアル化し、それを次のアクティビティに渡し、反対側で逆シリアル化することです。これはうまくいくが、確かに少し重い。

+0

最初のオプションは非常に危険です。私は、アプリがいつでもOSによって作成または破棄されるという印象を受けているので、静的フィールドはあまり気付かずに消える可能性があります。 –

+0

2番目のオプションは、戻るボタンのために機能しませんでした。前のページは現在のページからではなくジャーナルからデータを取得します。 –

+0

はい、あなたのアプリは破壊される可能性がありますが、フォアグラウンドにいる間は一般的には破壊されません。アプリケーションがフォアグラウンドアプリケーションであるときにリソースを解放するためにデバイスを破棄しなければならない場合、おそらく大きな問題が発生している可能性があります。 –

1

オブジェクトを直列化するのではなく、オブジェクトを渡すクラスのパーセル可能なインターフェイスを実装します。 パーセル可能は、アンドロイド固有のコンセプトであり、最高のパフォーマンスを得るために推奨されています。

関連する問題