1. 程式人生 > >AsyncTask異步操作

AsyncTask異步操作

task async

在開發Android移動客戶端的時候往往要使用多線程來進行操作,我們通常會將耗時的操作放在單獨的線程執行,避免其占用主線程而給用戶帶來不好的用戶體驗

  1. public abstract class AsyncTask<Params, Progress, Result> {

三種泛型類型分別代表“啟動任務執行的輸入參數”、“後臺任務執行的進度”、“後臺計算結果的類型”

一個異步任務的執行一般包括以下幾個步驟:

1.execute(Params... params),執行一個異步任務,需要我們在代碼中調用此方法,觸發異步任務的執行。

2.onPreExecute(),在execute(Params... params)被調用後立即執行,一般用來在執行後臺任務前對UI做一些標記。

3.doInBackground(Params... params),在onPreExecute()完成後立即執行,用於執行較為費時的操作,此方法將接收輸入參數和返回計算結果。在執行過程中可以調用publishProgress(Progress... values)來更新進度信息。

4.onProgressUpdate(Progress... values),在調用publishProgress(Progress... values)時,此方法被執行,直接將進度信息更新到UI組件上。

5.onPostExecute(Result result),當後臺操作結束時,此方法將會被調用,計算結果將做為參數傳遞到此方法中,直接將結果顯示到UI組件上。

在使用的時候,有幾點需要格外註意:

1.異步任務的實例必須在UI線程中創建。

2.execute(Params... params)方法必須在UI線程中調用。

3.不要手動調用onPreExecute(),doInBackground(Params... params),onProgressUpdate(Progress... values),onPostExecute(Result result)這幾個方法。

4.不能在doInBackground(Params... params)中更改UI組件的信息。

5.一個任務實例只能執行一次,如果執行第二次將會拋出異常。



本文出自 “YuanGuShi” 博客,請務必保留此出處http://cm0425.blog.51cto.com/10819451/1943549

AsyncTask異步操作