我用AsyncTask
來請求一大塊數據。收到數據後,將在onPostExecute
方法內處理數據。處理數據可能需要一段時間。活動的用戶界面凍結在AsyncTask的onPostExecute?
根據我的理解,AsyncTask
是異步的,並且獨立於UI。
- 爲什麼我的活動凍結
onPostExecute
? - 如果
onPostExecute
方法內的處理過長,Activity
凍結是否正常? - 我該如何使它不會凍結
onPostExecute
?
我用AsyncTask
來請求一大塊數據。收到數據後,將在onPostExecute
方法內處理數據。處理數據可能需要一段時間。活動的用戶界面凍結在AsyncTask的onPostExecute?
根據我的理解,AsyncTask
是異步的,並且獨立於UI。
onPostExecute
?onPostExecute
方法內的處理過長,Activity
凍結是否正常?onPostExecute
?doInBackground
方法做這樣(database , network ,parsing
的response.etc)所有的數據源操作。onProgressUpdate
onPostExecute
執行任何解析操作任何UI更新用。嘗試在postexecute
中獲得過濾或parsed
data
(較輕的數據)。確保您在AsynTask
方法中使用了doInBackground
方法。
在doInBackground方法中移動長操作。 – 2013-04-24 09:35:46
爲什麼我的活動凍結onPostExecute?
根據您的文章,您執行一些耗時的操作 PostExecute方法。在PostExecute正在UI線程上運行,所以它是 沒問題,你的UI被凍結了。
如果onPostExecute方法內的處理過長,Activity是否正常凍結?
是的,是的。你應該在doInBackground方法 (非UI線程)
如何讓這樣的,我的活動不會凍結onPostExecute進行長時間的操作?
嘗試在長時間操作轉移到doInBackground方法和 在PostExecute只更新UI根據響應,你在以後的方法doInBackground操作 得到。
看到長時間運行的任務需要在doInBackground
這裏綁定你不能綁定UI控件像Button
,ImageView
等doInBackground
在onPostExecute
建成後可綁定都需要控制,要確保此處[onPostExecute
]你不捉迷藏另一個任務。
onPostexecute中是否存在其他長時間運行的任務? – 2013-04-24 09:30:10
@ankitmakwana:是的,但'onPostExecute'是'AsyncTask'的一部分。如果'AsyncTask'是異步的,在'onPostExecute'裏面有一個很長的進程不應該讓Activity凍結,因爲它運行在一個單獨的線程上。 – Arci 2013-04-24 09:35:53