【发布时间】:2011-06-04 22:00:07
【问题描述】:
我想知道基于位置的 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 分钟。用户只需按下按钮即可手动请求位置更新。
以上是我如何在我的应用程序中实现定位服务。
我需要知道我的做法是否合适。如果不是,有什么问题?如果是,有什么可以改进的吗?
【问题讨论】:
-
这是一篇很棒的文章,有很多关于这个问题的有用代码。 android-developers.blogspot.com/2011/06/…