結構
繼承關係
public abstract class AsyncTask extends Object
java.lang.Object
android.os.AsyncTask<Params, Progress, Result>
類概述
AsyncTask能夠適當地、簡單地用於 UI線程。這個類不需要操作線程(Thread)就可以完成後臺操作將結果返回UI。
異步任務的定義是一個在後臺線程上運行,其結果是在 UI線程上發佈的計算。 異步任務被定義成三種泛型類型: Params,Progress和 Result;和四個步驟: begin , doInBackground,processProgress 和end。
用法
AysncTask必須被繼承使用。子類至少覆蓋一個方法 (doInBackground(Params...)),最經常覆蓋另一個(onPostExecute(Result).)下面是一個子類的例子:
4個步驟
當一個異步任務被執行,任務經過四各步驟:
1.onPreExecute(),在UI線程上調用任務後立即執行。這步通常被用於設置任務,例如在用戶界面顯示一個進度條。
2.doInBackground(Params...),後臺線程執行onPreExecute()完後立即調用,這步被用於執行較長時間的後臺計算。異步任務的參數也被傳到這步。計算的結果必須在這步返回,將傳回到上一步。在執行過程中可以調用publishProgress(Progress...)來更新任務的進度。
3.onProgressUpdate(Progress...),一次呼叫 publishProgress(Progress...)後調用 UI線程。執行時間是不確定的。這個方法用於當後臺計算還在進行時在用戶界面顯示進度。例如:這個方法可以被用於一個進度條動畫或在文本域顯示記錄。
4.onPostExecute(Result), 當後臺計算結束時,調用 UI線程。後臺計算結果作爲一個參數傳遞到這步。
線程規則
有一些線程規則必須去遵守,這個類纔會正確的工作:
· 任務實例必須創建在 UI線程
· execute(Params...)必須在 UI線程上調用
· 不要手動調用onPreExecute(), onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...)
· 這個任務只執行一次(如果執行第二次將會拋出異常)