2011-11-27 91 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