android中的

 

結構

繼承關係

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...)

·         這個任務只執行一次(如果執行第二次將會拋出異常)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章