2013-04-15 58 views
0

嗨\我不斷收到我的異步onCreate錯誤。 這是代碼和logcat跟蹤。任何反饋讚賞。然後 閃屏運行的應用程序停止一旦啓動主屏幕異步OnCreate錯誤

public class HomeActivity extends ListActivity { 
+0

鏈接,您不應該在的AsyncTask doInBackground()方法的UI組件進行交互。 – Sri

回答

2

你不應該在doInBackground操縱你的AsyncTask的看法。

+0

所以我只是將mapfragment的uisettings和相機設置刪除爲postExecute?我是否將標記和片段留在異步? – PropK

+0

是的,把它移動到'onPostExecute'(如果你希望它在異步線程完成後執行)或'onPreExecute'(在線程啓動之前執行它) – waqaslam

+0

我移動了它們,但我仍然得到相同的錯誤? Il上傳更新後的代碼 – PropK

2

doInBackground()在後臺線程上運行。所以你不能在後臺線程上修改ui。您需要在ui線程上進行更改或更新ui。在任務被執行之前

  1. onPreExecute(),調用UI線程上:

    http://developer.android.com/reference/android/os/AsyncTask.html

    當執行一個異步任務,任務經過4個步驟。此步驟通常用於設置任務,例如通過在用戶界面中顯示進度條。

  2. doInBackground(Params ...),在onPreExecute()完成執行後立即在後臺線程上調用。 此步驟用於執行可能需要很長時間的後臺計算。異步任務的參數傳遞給此步驟。計算結果必須通過該步驟返回並返回到最後一步。此步驟還可以使用publishProgress(Progress ...)發佈一個或多個進度單元。這些值在onProgressUpdate(Progress ...)步驟中發佈在UI線程上。

  3. onProgressUpdate(Progress ...),在調用publishProgress(Progress ...)後在UI線程上調用。執行的時間是未定義的。此方法用於在後臺計算仍在執行時在用戶界面中顯示任何形式的進度。例如,它可以用來爲進度條設置動畫效果或在文本字段中顯示日誌。

  4. onPostExecute(Result),在後臺計算完成後在UI線程上調用。後臺計算的結果作爲參數傳遞給此步驟。

根據doInbackground()中返回的結果,在onPostExecute()中使用runonuithread或更新ui。

檢查以下

Doing UI task in doinbackground() in Android