我使用AsyncTask
進行長時間運行的任務,但出現以下錯誤。AsyncTask中的RuntimeException
error in doInBackground====java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
爲什麼我得到那個錯誤,這是什麼意思?
我使用AsyncTask
進行長時間運行的任務,但出現以下錯誤。AsyncTask中的RuntimeException
error in doInBackground====java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
爲什麼我得到那個錯誤,這是什麼意思?
您只能從OnPostExecute和OnProgressUpdate訪問GUI。
通常,當您更改asyntask這是不允許的UI這個錯誤出現,另一種方式是實現處理程序,而不是asyntask ...
不準確,您不允許修改'AsyncTask'中的任何地方的用戶界面,但您可以像提及的@Lukas那樣在'onPostExecute'和'onProgressUpdate'中執行此操作。 – WarrenFaith 2011-04-13 13:32:12
你可能運行一個非UI線程裏面的任務。
UI線程被設置爲循環。你可以看到在一個堆棧跟蹤或DDMS在調試循環:
...
MessageQueue.next() line: 146
Looper.loop() line: 110
...
這個循環需要照顧的處理信息,就像一個AsyncTask
發送的,具有Handler
,像一個AsyncTask
是試圖設置。如果您在沒有套圈的線程上啓動任務,則會收到該消息。
因爲你沒有發佈你的代碼,所以很難找到問題。
我認爲是因爲您訪問UI線程DoInBackground.
(例如:您訪問TextView,或Button或EditText ....)這是使用Asyntask時最常見的錯誤。
您應該在DoInBackGround
中發佈一些參數到publishProgress
。那麼asyntask
會將此參數發送到onProgressUpdate
,並且此方法將在UI上執行線程
請發佈您的代碼。 – Wroclai 2011-04-13 11:10:49