AsyncTask(非同步任務)

來源:互聯網
上載者:User

標籤:android   os   使用   ar   問題   cti   代碼   on   c   

一、為瞭解決新線程不能更新UI組件的問題,Android提供了如下幾種解決方案。

  1)使用Handler實現線程之間的通訊;

  2)Activity.runOnUiThread(Runnable);

  3)View.post(Runnable);

  4)View.postDelayed(Runnable,long).

二、AsyncTask適用於簡單的非同步處理,不需要藉助線程和Handler即可實現。AsyncTask<Params,Progress,Result>是一個抽象類別,通常用於被繼承,繼承AsyncTask時需要指定如下三個泛型參數。

  1)Params:啟動任務執行的輸入參數類型

  2)Progress:背景工作完成的進度值的類型

  3)Result:後台執行任務完成後返回結果的類型

三、實現AsyncTask實現步驟:

  1)建立AsyncTask的子類,並為三個泛型參數指定類型。如果某個泛型參數不需要指定類型,可將它指定為Void。

  2)根據需要,實現AsyncTask的如下方法:

    (1)doInBackground(Params...):重寫該方法是後台線程將要完成的任務。該方法可以調用publishProgress(Progress... values)方法更新任務的執行進度。

    (2)onProgressUpdate(Progress.. values):在doInBackground()方法中調用publishProgress()方法更新任務的執行進度後,將會觸發該方法。

    (3)onPreExecute():該方法將在執行後台耗時操作前被調用。通常該方法用於完成一些初始化的準備工作,比如在介面上顯示進度條等。

    (4)onPostExecute(Result result):當doInBackground()完成後,系統會自動調用0nPostExecute()方法,並將doInbackground()方法的傳回值傳給該方法。

  3)調用AsyncTask子類的執行個體的execute(Params... params)開始執行耗時任務。

四、使用AsyncTask時必須遵守如下規則:

  1)必須在UI線程中建立AsyncTask的執行個體。

  2)必須在UI線程中調用AsyncTask的execute()方法。

  3)AsyncTask的onPreExecute()、onPostExecute(Result result)、doInBackground(Params...)、onProgressUpdate(Progress.. values)方法,不應該由程式員代碼調用,而是由Android系統負責調用。

  4)每個AsyncTask只能被執行一次,多次調用將會引發異常。

AsyncTask(非同步任務)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.