Android 从后台服务获取位置,是否正确?

Android 从后台服务获取位置,是否正确?,android,Android,我有一个后台服务,每5分钟从位置管理器获取一次更新。调用on locationChaged时,我在活动中调用一个函数来更新保存用户位置的地理点。这工作很好,符合我的要求。我只是不确定使用广播接收器这样的东西是否更好。我试过使用广播接收器,但不起作用。我现在这样做有什么不对吗 我的位置服务中有以下方法: public static double getLat() { return lat; } public static double getLng() { return lng;

我有一个后台服务,每5分钟从位置管理器获取一次更新。调用on locationChaged时,我在活动中调用一个函数来更新保存用户位置的地理点。这工作很好,符合我的要求。我只是不确定使用广播接收器这样的东西是否更好。我试过使用广播接收器,但不起作用。我现在这样做有什么不对吗

我的位置服务中有以下方法:

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

你所做的很好,根据我的经验,这是处理位置更新的标准方法。很容易将LocationManager配置为每5分钟请求一次更新。我唯一的建议是想想你是否真的需要一个服务来做你需要的事情。当活动在屏幕上运行时,是否只需要位置更新?如果是这样,请不要使用后台服务。如果您需要更新,即使您的活动已关闭,也需要更新,那么请使用服务并确保发出持续通知,以便用户知道您的服务正在后台运行


广播接收器更多地用于在手机上的某些事件后(如手机已打开)需要启动或停止后台服务时。

我计划从多个活动的服务中获取位置,因此在这种情况下,我希望它是一项单独的服务,而不是活动本身。谢谢你的帮助!