(
API level 3
,所以幾乎所有目前在市面上流通的
Android
版本皆可使用)
是除
Thread
外的另一種選擇,
Android
團隊鼓勵主執行緒(
UI thread
) 專注於操作
&
畫面的流暢呈現,其餘工作 (如網路資料傳輸、檔案/磁碟/資料存取) 最好都在背景執行;
Thread
通常要搭配
Handler
使用,而
AsyncTask
用意在簡化背景執行
Thread
程式碼的撰寫。
如果您預期要執行的工作能在幾秒內完成,就可以選擇使用
AsyncTask
,若執行的時間很長,
Android
則強烈建議採用
,
及
。
要使用
AsyncTask
,必定要建立一個繼承自
AsyncTask
的子類別,並傳入
3
項資料:
Params
-- 要執行
doInBackground()
時傳入的參數,數量可以不止一個
Progress
--
doInBackground()
執行過程中回傳給
UI thread
的資料,數量可以不止一個
Rsesult
-- 傳回執行結果, 若您沒有參數要傳入,則填入
Void
(
注意 V 為大寫
)。
AsyncTask
的運作有 4 個階段:
onPreExecute
--
AsyncTask
執行前的準備工作,例如畫面上顯示進度表,
doInBackground
-- 實際要執行的程式碼就是寫在這裡,
onProgressUpdate
-- 用來顯示目前的進度,
onPostExecute
-- 執行完的結果 -
Result
會傳入這裡。