android - AsyncTask进行http请求,请求到XML数据后在onPostExecute解析,为何报在主线程中执行网络请求错误。
怪我咯
怪我咯 2017-04-17 17:36:35
0
3
515

然而将解析操作写在doInBackground方法中不会报错。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(3)
洪涛

是這樣的,樓主的result(InputStream) 是指向遠端資源的InputStream,此時對該InputStream讀取數據,都相當於讀取遠端的資源,所以會報錯。究其根本,在於Android對於「主執行緒中無法執行網路請求」的限制是整個資料流程,而非僅限制在連線時((HttpURLConnection)url.openConnection())。

所以建議做法是整個InputStream的解析都放在doInBackground裡,然後在doInBackground中傳回一個符合業務邏輯的實體類別。

小葫芦

解析是個耗時操作,應該放在子執行緒,onPostExecute是主线程,doInBackground是子執行緒.

你在主執行緒做了耗時操作,報錯了很正常.

Ty80

你應該把InputStream 換成取得到的資料 String

接著在onPostExecute()中解析

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板