2011/11/06

Activity間やサービス間でデータを共有する方法


複数のActivity間やサービスでデータを共有するにはIntentのExtra、preferenceやDatabase
など様々な方法がありますが、Extraでは貧弱だけれどpreferenceやDBなどを使用
するほどでもない場合には下記の方法があります。

【android.app.Application クラス】
android.app.Applicationクラスを使用すればグローバルにアプリケーションの
状態を保持することができます。
通常、ActivityはconfigChangeを契機に再起動され、メンバ変数も特別な処理を
行わない限り初期化されます。
そういったActivityのライフサイクルに左右されず、アプリケーション(プロセス)
の開始~終了までデータを保管できる場所としてApplicationクラスが使用できます。
これはアプリケーション内の各ActivityがgetApplication()を使ってアクセスできます。
Applicationクラスを使用するにはAndroidManifest.xmlに登録することで自動的に
インスタンス化されます。
→使用方法は下記が参考になります
 http://techbooster.jpn.org/andriod/application/2353/


【public static】
staticなフィールドやメソッドは複数のアクティビティやサービスからアクセス
できる方法として使用することができます。
気を付けないといけないのは、staticフィールドはActivityのライフサイクルに
左右されないということです。
ライフサイクルに伴い初期化や後処理を行う必要がある場合は別途管理する必要
があります。

Android Developerサイトにも情報が載っていますので参考にしてみてください。
http://developer.android.com/resources/faq/framework.html

以上です。