首先,我知道 LocationManager 不必在 AsyncTask 中调用,因为它已经是非 UI 阻塞 :)
我有一个活动 1. 获取用户当前位置 2. 调用 Web 服务以检索该位置周围的特定 POI 列表。
用户可以选择使用 TabActivity 以地图或列表的形式查看结果。牢记这一点,获取用户位置和调用 web 服务的 AsyncTask 由 TabActivity 视图管理,而不是任何一个停靠视图。
所以我希望 TabActivity 启动一个 AsyncTask,它首先获取用户的位置,然后调用 web 服务。进度对话框可防止在此过程中使用选项卡切换视图。
除了从 AsyncTask 获取用户位置之外,几乎所有工作都在工作。编写 web 服务代码,编写映射和覆盖代码,任务进度对话框应对方向变化。
对位置的关注是速度而不是准确性。如果用户选择在地图视图上查看结果,那么我将提供一个“我的位置”按钮,以便获得更准确的位置。我只是想初步获得一个大致的位置并快速返回搜索结果。
也许我会以错误的方式解决这个问题。也许我应该显示地图视图,让地图活动找到当前位置,然后在异步中只调用 web 服务 - 但是如果用户在位置阶段点击列表视图选项卡怎么办?我还打算允许用户指定他们的默认视图——有些人可能更喜欢列表而不是地图。在这种情况下,我将有一个必须检索位置的列表视图。
感谢马丁的任何建议。