2013-07-18 130 views
0

我不確定這個問題是否曾經在SO上提出過。當使用myTask.execute();執行異步任務時,最開始使用哪種方法。我正在學習以下教程:http://mobiforge.com/developing/story/consuming-json-services-android-apps用於使用JSON服務,作者使用new ReadWeatherJSONFeedTask() .execute()以及一些參數。我很困惑,首先運行哪個方法,以及如何傳遞參數以獲得結果。 任何人都可以幫助我。執行方法異步任務

謝謝。

+0

參數在那裏,因爲有人決定使用_exheritance_ _extending _類_AsyncTask_。當你擴展一個類時,你可以添加你自己的成員變量來實現新的功能。 – jahroy

回答

0

根據Android的API參考的AsyncTask,

當執行一個異步任務,任務經過4個步驟:

  1. onPreExecute()之前,調用UI線程上任務被執行。此步驟通常用於設置任務,例如 ,方法是在用戶界面中顯示進度條。
  2. doInBackground(Params ...),在onPreExecute()完成執行後立即在後臺線程上調用。使用此步驟 執行可能需要很長時間的後臺計算。異步任務的參數 傳遞到此步驟。計算結果 必須由此步驟返回,並且將返回到最後一步 。此步驟還可以使用 publishProgress(Progress ...)發佈一個或多個進度單元。 這些值發佈在UI線程的 onProgressUpdate(Progress ...)步驟中。
  3. onProgressUpdate(Progress ...),在調用publishProgress(Progress ...)後在UI線程上調用。執行時間爲 未定義。在後臺計算仍在執行時,此方法用於在用戶界面中顯示任何形式的進度。例如,它可以用來爲進度條設置動畫效果,或者在 文本字段中顯示日誌。
  4. onPostExecute(Result),在後臺計算完成後在UI線程上調用。計算的背景 的結果作爲參數傳遞給此步驟。

由於這對UI線程是在一開始就執行的解釋onPreExecute()

Guide可能會幫助你在這方面更多的幫助。

+1

感謝您的快速響應! – user2511882

4

參數的需要的AsyncTask,聲明在定義擴展的AsyncTask類..和方法的執行順序是:

  1. onPreExecute()---它運行在UI線程上
  2. doInBackground()和onProgressUpdate() - 它們在工作線程上運行
  3. 和onPostExecute()---在UI線程上運行。
+0

感謝您的快速響應! – user2511882