2011-11-27 87 views
4

我有一個後臺服務,每5分鐘從位置管理器獲取更新。在調用locationChaged時,我在我的活動中調用一個函數來更新保存我的用戶位置的GeoPoint。這工作正常,做我想要的。我只是不確定是否最好使用廣播接收器來做這件事。我曾嘗試使用廣播接收器,但它不起作用。我目前這樣做的方式有什麼不正確的嗎?從後臺服務獲取位置,這是正確的嗎?

我有我的位置服務下面的方法:

public static double getLat() { 
    return lat; 
} 

public static double getLng() { 
    return lng; 
} 

public void onLocationChanged(Location loc) {   
    lat = (double) (loc.getLatitude()); 
    lng = (double) (loc.getLongitude()); 
    mapview.locationHasChanged(); 
} 

在我綁定的活動我有以下幾點:

public static void locationHasChanged() { 

    double myLat = LocationService.getLat(); 
    double myLng = LocationService.getLng(); 

    LocGeo = new GeoPoint(
      (int) (myLat * 1E6), 
      (int) (myLng * 1E6)); 
} 

回答

2

你在做什麼是好的,並從我的經驗標準處理位置更新的方式。將LocationManager配置爲每5分鐘請求更新非常簡單。我唯一的建議就是想想如果你真的需要服務來做你需要的。當您的活動在屏幕上運行時,您是否只需要位置更新?如果是這樣,請不要使用後臺服務。如果即使您的活動已關閉,您仍需要更新,請使用服務,並確保發出OnGoing通知,以便用戶知道您的服務正在後臺運行。

廣播接收器更多用於在手機發生某些事件(例如手機開機後)後需要啓動或停止後臺服務。

+0

我打算從多個活動的服務中獲取位置,所以在這種情況下,我確實希望它是一個單獨的服務,而不是活動本身。謝謝您的幫助! – jgelderloos