我有一个我无法理解的问题和概念。 我的应用程序从Internet获取当前位置的信息。 该信息在AsyncTask中获得。
我的问题是,在获得GPS坐标之前,我不想继续获取信息。
我有GPS服务,工作正常,返回坐标。但是,我希望我的AsyncTask从Internet获取信息,等待GPS坐标可用。
这也有点工作 - 在我的AsyncTask for GPS中我启动了获取我坐标的serviceIntent。但是onPostExecute不会等到我有坐标并继续前进。
如何让AsyncTask等到坐标可用?
答案 0 :(得分:0)
在坐标可用之前,您不需要等待AsyncTask。
在您的AsyncTask中,您查询GPS坐标,当您获得GPS坐标响应时,您可以启动另一个具有已知GPS坐标的AsyncTask,以向您的服务器发送请求并等待响应。
也许您不需要第一个AsyncTask,只需调用位置服务来获取当前位置并在位置服务 onLocationChanged()回调中启动AsyncTask。当找到失败时你也需要做错误处理,例如禁用位置。
如果你真的想在 onLocationChanged()之后调用 onPostExecute(),你可以在AsyncTask的 onExecute()中等待一个锁对象,在位置服务回调中,在等待对象上发送通知。