2014-02-06 207 views
0

由于Volley中的所有请求都是在不阻塞“主线程”的情况下异步执行的,是否有任何方法可以等待请求完成并继续主线程执行?异步抽象HTTP请求

+0

'等待请求完成,然后继续主线程执行?'你的意思是阻塞主线程?这不是建议的,不。 (这是整点,顺便说一句)。 – njzk2

+0

实际上,我需要在请求后立即处理响应,否则我会得到空指针异常,或者可能是主线程可以检查天气响应已收到,然后继续? – Sameed

+0

没有。您不需要依赖于请求完成,只需要在请求完成时执行您在开始请求时通过的侦听器中执行的操作。 – njzk2

回答

0

你应该设计你的应用程序,使其始终保持主线程生活。然后,您可以在使用侦听器或异步任务接收到响应时运行代码块。使用听众here查看我的答案。或者查看onPostExecute for AsyncTask。

0

有什么办法可以等待请求完成然后继续 主线程执行?

另一种方法是在排气工作时显示加载对话框。这样,您可以阻止用户与您的应用程序进行交互,直到请求完成(请不要忘记给他一个取消的机会)。

排气是为了与您的主线程并行工作,并告诉您什么时候请求已完成(所有应用程序应该做什么),如果您不希望这样做,请不要使用Volley。但是你会得到一个NetworkOnMainThreadException和if you manage to bypass it,你最终会遇到一个ANR异常。