从后台服务获取位置,这是正确的吗?

时间:2011-11-27 18:50:29

标签: android

我有一个后台服务,每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));
}

1 个答案:

答案 0 :(得分:2)

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

当手机上的某些事件发生后需要启动或停止后台服务时,例如手机开机后,广播接收器会被更多地使用。