AsyncTask<Params, Progress, Result>,這是基本的架構,使用泛型來定義參數,
泛型意思是,你可以定義任意的資料型態給他。
Params : 參數,你要餵什麼樣的參數給它。
Progress : 進度條,進度條的資料型態要用哪種
Result : 結果,你希望這個背景任務最後會有什麼樣的結果回傳給你。
此外,AsyncTask會有四個步驟。
onPreExecute : 執行前,一些基本設定可以在這邊做。
doInBackground : 執行中,在背景做任務。
onProgressUpdate : 執行中,當你呼叫publishProgress的時候會到這邊,可以告知使用者進度。
onPostExecute : 執行後,最後的結果會在這邊。
拿下載圖片的例子來寫,繼承AsyncTask,並實作四個步驟,
參數說明 : 丟入網址(String),進度條用整數(Integer),拿到圖片(Bitmap)
private class GetImage extends AsyncTask<String , Integer , Bitmap>{
@Override
protected void onPreExecute() {
//執行前 設定可以在這邊設定
super.onPreExecute();
}
@Override
protected Bitmap doInBackground(String... params) {
//執行中 在背景做事情
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
//執行中 可以在這邊告知使用者進度
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
//執行後 完成背景任務
super.onPostExecute(bitmap);
}
}