2011-09-15 51 views
3

分享活動之間位置信息的最佳做法是什麼? 例如:Android - 在活動之間分享位置信息

  • 活性1(主要)顯示器數據基於用戶的當前位置(緯度&長)
  • 活性2顯示了谷歌地圖數據接近的用戶的當前位置
  • Activity3顯示鄰近日曆事件到當前用戶的位置

每個活動都會通過發送當前位置來調用特定的webservice方法。

我問這個,因爲我很困惑:

  • 我應該創建定位對象的靜態引用(獲得的主要活動的用戶的位置),並使用該對象的其他活動。
  • 每個活動都有自己的實現來獲取用戶位置。

謝謝

+0

我也想有什麼做的正確方法。 – Eduardo

回答

2

如果你想爲你導航活動的位置保持不變,在傳遞起始意圖,只是有每個活動保持數據的副本。

另一方面,如果您希望在所有3中都具有動態位置,那麼我會考慮製作服務以收聽位置服務。然後您的活動可以綁定到該服務並接收更新。這可以確保您不會在多個監聽器周圍閒逛,並且意外地讓位置偵聽器的存活時間超過所需的時間。它還爲您提供一個地方來保持必要的設置(即用戶停用,頻率和精度等)。

0

它很容易將信息從一個活動傳遞到另一個活動。當您創建用於啓動其他活動的意圖時,您可以將附加信息附加到新活動啓動時可以訪問的意圖。

下面是一個例子:

從一個活動的信息傳遞到另一個你可以這樣做:

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"); 
} 

你可以傳遞的不僅僅是字符串,整數等......你甚至可以傳遞對象。也可以傳遞Parcelable類的子對象。要將parcelable添加到意圖簡單:

i.putExtra("variableName", instanceOfMyClass); 

在新的活動您只需撥打:

MyClass obj = (MyClass) extras.getParcelableExtra("parcelableName");