2010-04-17 34 views
0

我只想檢查一下我是否理解異步Http請求在Android上的工作方式。 假設我提出這樣的請求並設置ResponseHandler<String> responseHandler來處理響應。通過這樣做有可能讓UI線程阻塞等待響應?其含義是,在功能的代碼:關於異步http的問題

public String handleResponse(HttpResponse response) 

在UI線程上也執行或是否有靜默催生當響應到達時等待響應並調用用handleResponse(HttpResponse對象響應)功能的線程?

回答

0

通過這樣做可以讓 UI線程阻塞等待 響應?

調用​​有或沒​​有ResponseHandler會阻塞該線程,直到HTTP請求已被處理。如果在主應用程序線程上調用​​,則將阻止UI。這不是一件好事 - 在單獨的線程上使用AsyncTask到​​,然後使用onPostExecute()實現來更新您的UI和請求的結果。

+0

您能否提供更多關於「onPostExecute()」功能的信息? – 2010-04-17 22:00:50

+0

當你實現一個'AsyncTask'時,你可以重寫'onPostExecute()'。在'doInBackground()'的後臺工作完成後,在主應用程序線程上調用它。下面是我的書中的一個示例項目,它顯示了使用HttpClient和'AsyncTask':http://github.com/commonsguy/cw-android/tree/master/Service/WeatherPlus/ – CommonsWare 2010-04-17 22:04:45