AsyncTask 等待位置
Posted
技术标签:
【中文标题】AsyncTask 等待位置【英文标题】:AsyncTask to wait for Location 【发布时间】:2016-04-22 19:47:57 【问题描述】:我有一个我无法理解的问题和概念。 我的应用程序根据当前位置从 Internet 获取信息。 信息在AsyncTask中获取。
我的问题是我不想在获得 GPS 坐标之前继续获取信息。
我有 GPS 服务,它工作正常并返回坐标。但是,我希望我的 AsyncTask 从 Internet 获取信息等到 GPS 坐标可用。
这也可以正常工作 - 在我的 GPS 的 AsyncTask 中,我启动了 serviceIntent 来获取我的坐标。但是 onPostExecute 不会等到我得到坐标并继续前进。
如何让 AsyncTask 等到坐标可用?
【问题讨论】:
【参考方案1】:您不需要 AsyncTask 等到坐标可用。
在您的 AsyncTask 中,您查询 GPS 坐标,当您收到 GPS 坐标响应时,您可以启动另一个具有已知 GPS 坐标的 AsyncTask 向您的服务器发送请求并等待响应。
也许你不需要第一个AsyncTask,只需调用位置服务获取当前位置并在位置服务onLocationChanged()回调中启动AsyncTask。当定位失败(例如定位被禁用)时,您还需要进行错误处理。
如果你真的希望 onPostExecute() 在 onLocationChanged() 之后被调用,你可以在 AsyncTask 的 onExecute() 中等待一个锁对象,在位置服务回调中,在等待对象上发送通知。
【讨论】:
不幸的是,我无法从 onLocationChange() 调用 AsyncTask。如何让 AsyncTask “监听”坐标? OnPostExecute() 在过程中间被调用 - 它不等待坐标。以上是关于AsyncTask 等待位置的主要内容,如果未能解决你的问题,请参考以下文章