我有一个后台服务,每 5 分钟从位置管理器获取更新。当 on locationChaged 被调用时,我在我的 Activity 中调用一个函数来更新保存我的用户位置的 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();
}
在我的绑定(bind) Activity 中,我有以下内容:
public static void locationHasChanged() {
double myLat = LocationService.getLat();
double myLng = LocationService.getLng();
LocGeo = new GeoPoint(
(int) (myLat * 1E6),
(int) (myLng * 1E6));
}
最佳答案
根据我的经验,您所做的很好,这是处理位置更新的标准方法。很容易将 LocationManager 配置为每 5 分钟请求一次更新。我唯一的建议是想想你是否真的需要一项服务来做你需要的事情。当您的 Activity 在屏幕上运行时,您是否只需要位置更新?如果是这样,请不要使用后台服务。如果即使您的 Activity 已关闭,您也需要进行更新,那么请使用服务并确保提供持续通知,以便用户知道您的服务正在后台运行。
广播接收器更多地用于当您需要在手机上发生某些事件后(例如手机开机后)启动或停止后台服务时。
关于android - 从后台服务获取位置,这是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288098/