文章轉載只能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處:http://blog.csdn.net/flowingflying/編程
在Handler的學習系列中,學習瞭如何handler實現worker線程與主線程(UI線程)之間的通訊。這是一種通用的處理方式,所以Android SDK將handler和線程隱藏,抽象出來造成AsyncTask抽象類,方便開發者使用。以前有過一篇很好的博文:Android學習筆記(三二):線程:後臺異步任務AsyncTask,詳細介紹了AsyncTask的使用方式。數組
下面列出AsyncTask類的幾個重要方法。AsyncTask的這種參數傳遞方式,讓我想起之前的C編程或者命令行,咱們不肯定function中帶多少個參數,一樣也不肯定命令會輸入多少個參數,可能沒有,也可能不少。AsyncTask就採用這種generics方式,實現任意參數數量。異步
咱們將參數類型Params用紅色標出。若是咱們Params的數據類型是String,那麼String… params就是說能夠帶任意個String對象。Java將之視爲數組,長度爲params.length,數值經過params[i]來讀取。例如對象task.execute("Hello","world","Good morning");,就是帶有三個String參數,而task.execute("1","2","3","4","5","6","7");帶有七個String的參數,其中params[4]是"5"。學習
若是Params,Progress,Result的數據類型分別是String array,Integer array和int,則繼承了爲MyTask<String,Integer,Integer>。若是咱們肯定不傳遞任何參數,能夠用Void,例如private class MyTask extends AsyncTask<Void, Void, Void> { ... }this
public class AsyncTask<Params,Progress, Result>
{
//A client will call this method
AsyncTask<Params, Progress, Result>
execute(Params.... params);
//Do your work here
//Frequently trigger onProgressUpdate()
Result doInBackGround(Params... params);
//Callback: After the work is complete
void onPostExecute(Result result);
//Callback: As the work is progressing
void onProgressUpdate(Progress.... progressValues);
}.net
下面經過小例子實現來進行詳細介紹。命令行
相關連接: 個人Android開發相關文章線程