我想知道基于位置的 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/