Car*_*Lee 4 gps android location
我想知道基于位置的 Android 应用程序的架构/工作流程的最佳实践是什么?
我当前的代码使用多个活动和一个支持服务,以及几个 AsyncTask。
我的应用程序一启动就启动我的服务,我在我的服务中执行所有 HTTP 调用和解析。我还写了一个 AsyncTask 的子类来获取用户的位置。每次我需要更新用户的位置时,我都会运行 AsyncTask。AyncTask 调用 LocationManager.requestLocationUpdates() 并要求尽快获取位置。我的策略是:
1. 首先,我获取 GPS 和网络的LastKnownLocation,并使用http://developer.android.com/guide/topics/location/obtaining-user-location.html#上的方法比较它们最佳估计。
2.当获得3个GPS位置和5个网络位置,或者GPS和网络之一或两者在1分钟内没有响应时,我停止任务。
3. 我返回我所拥有的最佳估计。
定位 AsyncTask 在服务中运行,我设置了一个 5 分钟的 AlarmService,以向我的服务发送一个 Intent,以检查我是否需要更新用户的位置。我的两个 AsyncTask 之间的最小间隔是 10 分钟。用户只需按下按钮即可手动请求位置更新。
以上是我如何在我的应用程序中实现位置服务。
我需要知道我的做法是否合适。如果不是有什么问题?如果是,有什么可以改进的吗?
我想你差不多明白了。我有非常相似的解决方案,我想尽快“进出”。
我在我的算法中实现了对“准确性”的检查。我从一开始就提供服务 1 分钟以获得最佳位置,或者如果我获得 25m 或更好的精度修复,我会更早退出。
此外,我不将 AsyncTask 用于定位本身 - 服务不会阻塞线程,它从 LocationManager 获取并处理回调,所以我不明白您为什么要执行 AsyncTask。
当我完成获取位置并即将退出时 - 然后我调用异步任务来处理到服务器的 Http post。
至于间隔 - 我给用户 5/15/30/1 小时和 1/2 天的选项。我为此使用了不精确的警报 - 据说电池更好。
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |