2011-09-15 29 views
3

アクティビティ間で位置情報を共有するのに最適な方法は何ですか?例えば :Android - アクティビティ間の位置情報を共有

  • Activity1(メイン)ユーザの現在位置に基づいてデータを表示する(LAT &長い)
  • Activity2は、ユーザの現在位置に近いデータでGoogleマップを表示
  • Activity3近カレンダーイベントを表示しますユーザーの現在の位置へ

各acivityは、現在の場所を送信することによって特定のWebサービスメソッドを呼び出します。

私は混乱しているので、私はこれを聞いてるのよ:

  • を私はLocationオブジェクトの静的参照を作成します(メイン活動中のユーザの位置を取得)やその他の活動にそのオブジェクトを使用する必要があります。
  • 各アクティビティには、ユーザーの場所を取得するための独自の実装があります。

はあなたが活動をナビゲートする場所が一定に滞在したい場合は、開始意図にそれを渡すだけのデータのコピーを各活性を維持しています

+0

。 – Eduardo

答えて

2

ありがとうございます。

一方、3つの場所をすべて動的にしたい場合は、ロケーションサービスを聴くサービスを検討します。あなたの活動は、そのサービスにバインドして更新を受け取ることができます。これにより、複数のリスナーが周囲に浮かんでしまったり、誤ってロケーションリスナーを希望よりも長く生き残らせたりすることがなくなります。また、必要な設定(ユーザーのオプトアウト、頻度、精度など)を維持するための単一の場所を提供します。

0

あるアクティビティから別のアクティビティに情報を渡すのは非常に簡単です。別のアクティビティーを開始するために使用するインテントを作成すると、そのアクティビティーが起動時にアクセスできるインテントに追加情報を付加できます。ここで

は一例です:

あなたが行うことができます別のActivityからの情報を渡すには:

Intent i = new Intent(this, OtherActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("variableName", "variable value"); 

その後、他のアクティビティでは、以下の

Bundle extras = this.getIntent().getExtras(); 
String var = null; 

if (extras != null) { 
    var = extras.getString("variableName"); 
} 

あなたを行うだろうStrings、intsなどを超えることができます。オブジェクトを渡すことさえ可能です。 Parcelableクラスの子であるオブジェクトも渡すことができます。単に意図にparcelableを追加するには:

i.putExtra("variableName", instanceOfMyClass); 

を新しいアクティビティでは、単に呼び出します。私もそれを行うための適切な方法は何か希望

MyClass obj = (MyClass) extras.getParcelableExtra("parcelableName"); 
関連する問題