android - 基于位置的 Android 应用架构的最佳实践是什么?

标签 android gps location

我想知道基于位置的 Android 应用架构/工作流程的最佳实践是什么?

我当前的代码使用多个 Activity 和一个支持服务,以及多个 AsyncTask。

我一启动我的应用程序就启动我的服务,我在我的服务中进行所有 HTTP 调用和解析。而且我还写了一个 AsyncTask 的子类来获取用户的位置。每次需要更新用户位置时,我都会运行 AsyncTask。 AyncTask 调用 LocationManager.requestLocationUpdates() 并要求尽快获取位置。我的策略是:
1. 首先,我获取 GPS 和网络的 LastKnownLocation,并使用 http://developer.android.com/guide/topics/location/obtaining-user-location.html#BestEstimate 上的方法比较它们.
2. 当获取到3个GPS位置和5个网络位置,或者GPS和网络其中之一或两者在1分钟内没有响应时,我停止任务。
3. 我退还我的最佳估价。

Locating AsyncTask 在服务中运行,我将 AlarmService 设置 5 分钟以向我的服务发送 Intent 以检查我是否需要更新用户的位置。我的两个 AsyncTask 之间的最小间隔是 10 分钟。用户只需按下按钮即可手动请求位置更新。

以上是我如何在我的应用程序中实现位置服务。
我需要知道我的做法是否合适。如果不是,哪里出了问题?如果是,有什么可以改进的地方吗?

最佳答案

我想你差不多明白了。我有非常相似的解决方案,我希望尽快“进出”。

我在我的算法中实现了“准确性”检查。我从一开始就提供服务 1 分钟以获得最佳可能位置,或者如果我获得 25 米或更好的精度修复,我会更早退出。

此外,我不将 AsyncTask 用于定位本身 - 服务不会阻塞线程,它会获取并处理来自 LocationManager 的回调,所以我不明白你为什么要使用 AsyncTask。

当我完成获取位置并准备退出时 - 然后我调用异步任务来处理发送到服务器的 Http。

就间隔而言 - 我为用户提供 5/15/30/1 小时和 1/2 天的选项。我为此使用了不精确的警报 - 据说电池更好。

关于android - 基于位置的 Android 应用架构的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239663/

相关文章:

android - 如何在回收站 View 中隐藏特定行的 View ?

java - 从 MainActivity 的 Button Click 中的 Fragment 访问方法

android - requestLocationUpdates 不适用于线程

使用C语言转换GPS坐标单位

swift - NSTimer 在后台模式下使用 locationManager 委托(delegate) ("Cheat way") SWIFT

iphone - 监视区域但位置图标在应用程序被杀死时消失

android - 如何在 React Native 中访问嵌套的 Text 元素中的链接?

android - 将复选框对齐到LinearLayout android中的右侧

Android 位置 "going for a walk"本身

java - 如何在BroadcastReceiver服务中获取纬度和经度值?