2013-02-18 80 views
1

我有幾個活動處理不同的屏幕與通過AsyncTask異步加載的信息。 「內螺紋已不叫Looper.prepare無法創建處理程序:Android 2.3.3(API等級8)AsyncTask怪異

所有數據提取的doInBackground() 所有的UI操作都在onPostExecute()

在某些情況下,我得到的錯誤做完成()「

如果我做了Looper.prepare(),它會崩潰,如果一個新的活動是爲這個類實例化的。

這是一個奇怪的行爲,我能夠找到它發生的原因。具有類似行爲的其他屏幕按預期工作。我可以找到它們之間沒有區別。

有沒有人有這種行爲?

+0

請張貼您的代碼。 – MrYanDao 2013-02-18 12:35:49

+0

當你在活動之間切換時,你是否取消了你的asynctask(s)?這是一個常見的錯誤,不要這樣做...... – 2013-02-18 12:37:24

+0

MrYanDao,爲了保密問題我不能發佈代碼。 – TheBigCheese 2013-02-18 12:39:09

回答

1

「無法在未調用Looper.prepare()的線程內創建處理程序」意味着您試圖在UI線程之外調用AsyncTask.execute()

有您應該遵循使用AsyncTask一些規則:

  • 任務實例必須在UI線程上創建。
  • execute(Params ...)必須在UI線程上調用。

此外,它可能意味着比你創建內部doInBackground方法Handler對象。