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

标签 android

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

相关文章:

java - 在 Android 中的 AlertDialog 中按下 OK 时返回 MainActivity

android - 获取当天 Android 4.0+ 上的所有日历事件

android - GridView 项目没有向下滚动到向上(重复项目)以及当我从 Android 中的服务器加载数据时?

android - JDK 7 已达到 "end of public updates"。 Android 开发人员能否使用 JDK 8 作为直接替代品?

android - windowMinWidthMajor 和 android :windowMinWidthMajor 有什么区别

java - ListView 中 url 中的图像随机图像错误

android - 为什么使用 ImageLoader 显示的肖像图像会旋转?

android - 当我使用 FLAG_ACTIVITY_SINGLE_TOP - onDestroy() 时,让我的 Activity 保持活跃

java - Thread.sleep 停止所有嵌套的异步任务

java - java.lang.String 类型的 Android fragment JSON <!DOCTYPE 无法转换为 JSONArray