【轉】 Pro Android學習筆記(九二):AsyncTask(1):AsyncTask類

文章轉載只能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處:http://blog.csdn.net/flowingflying/編程

在Handler的學習系列中,學習瞭如何handler實現worker線程與主線程(UI線程)之間的通訊。這是一種通用的處理方式,所以Android SDK將handler和線程隱藏,抽象出來造成AsyncTask抽象類,方便開發者使用。以前有過一篇很好的博文:Android學習筆記(三二):線程:後臺異步任務AsyncTask,詳細介紹了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<ParamsProgress, 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開發相關文章線程

相關文章
相關標籤/搜索