Android非同步任務類分析

來源:互聯網
上載者:User

標籤:android   asynctask   非同步任務   

一、為什麼要使用非同步任務類? 
Handler模式需要為每一個任務建立一個新的線程,任務完成後通過Handler對象向UI線程發送訊息,完成介面的更新,這種方式對整個介面的控制非常精細。但是也有缺點,例如代碼臃腫,所以為了簡化操作,Android 1.5 sdk 提供了一個工具類 AsyncTask(非同步任務類),使得建立非同步任務變的更加簡單。
二、非同步任務類的實現
非同步類實現計數示範過程:
首先在 主Activity檔案中:(主Activity用來解析程式的第一個介面)
1. 建立非同步類任務的對象,並給非同步類的構造傳遞一個文字物件的引用,這樣在非同步任務中能操作這個文字框; 2. 使用非同步類對象的引用調用 execute(Params .. Params)方法,執行非同步任務。也即進入了我們建立的非同步任務中去執行;
說明:execute()可以傳遞多個參數,傳遞的參數類型受非同步類的第一個參數類型決定,如果非同步類的第一個參數類型為Integer類型,那麼execute傳遞的參數就必須是整型的,以此類推;在非同步類用doInBackground(Integer ... params)方法來接收execute傳遞的參數,這種參數的寫法表示,用來接收多個傳遞來的參數,都儲存在數組params[ ]中,params[0]表示傳遞的第一個參數,以此類推;
                
主Activity代碼如下:

進入了我們建立的非同步任務中:
    首先介紹一下這個非同步任務類的建立及相應參數說明:    a. 在建立AsyncTask類(非同步任務類)的時候,要設定資料類型;(稱為Android的泛型程式設計)        參數說明:        b. 通俗說一下參數:    第一個參數的類型,就是我們在執行execute()方法時要傳遞的參數類型,還有接收該參數的方法doInBackground()的參數類型保持一致;    第二個參數的類型,就是onProgressUpdate(..)方法接收publicProgress()方法傳遞資料對應的類型;    第三個參數的類型,就是接收doInBackground()方法的返回值的類型;

3.  在execute方法執行後,也即啟動了非同步任務,onPreExecute()方法立即被執行;
4.  在onPreExecute()執行完成後,立即執行doInBackground()方法;     該方法的說明:        a. 該方法被子線程調用;        b. 將耗時的操作放在該方法中;        c. 在該方法中,通過非同步類的對象調用publishProgress()該方法,要求系統自動調用onProgressUpdate()方法;類似handle的用法;        d. 該方法的返回值,賦值給了類的第三個參數Result;
5. 由於上面調用了publishProgress()該方法,會要求系統的UI主線程自動調用onProgressUpdate()方法;           a. 該方法被UI主線程調用;
非同步任務: 
非同步任務實現列表的重新整理:
實現代碼:




Android非同步任務類分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.