歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android異步操作----AsyncTask類

Android異步操作----AsyncTask類

日期:2017/3/1 9:43:58   编辑:Linux編程

在開發Android應用程序時必須遵守單線程模型的原則,尤其是開發有網絡交互功能的應用,Android UI線程主要用來控制控件和觸屏的操作。在單線程模型中必須要遵行兩條原則:

1、 不要阻塞UI線程;

2、 確保只在UI線程中訪問Android UI工具包

當一個程序第一次啟動時,Android會同時啟動一個對應的主線程(Main Thread),主線程主要負責處理與UI相關的時間,例如:用戶的按鍵事件,用戶接觸屏幕的事件,用戶接觸屏幕的事件以及屏幕繪圖事件,並把相關的事件分發到對應的組件進行處理。所以主線程通常又被叫做UI線程。

--------------------------------------分割線 --------------------------------------

Android異步下載圖片並且緩存圖片到本地 http://www.linuxidc.com/Linux/2014-04/100444.htm

Android異步任務(AsyncTask)的設計思想 http://www.linuxidc.com/Linux/2014-02/97104.htm

Android 異步加載圖片分析 http://www.linuxidc.com/Linux/2013-06/85369.htm

Android 中加載網絡資源時的優化 緩存和異步機制 http://www.linuxidc.com/Linux/2013-06/85364.htm

Android短彩信幻燈片異步加載機制 http://www.linuxidc.com/Linux/2013-03/81528.htm

Android-自定義TextView和異步加載圖片的實現 http://www.linuxidc.com/Linux/2012-12/76331.htm

--------------------------------------分割線 --------------------------------------

AsyncTask其實是Android開發包提供的一個工具類,它使創建需要與用戶界面交互的長時間運行的任務變得更簡單。相對來說AsyncTask更輕量級一些,適用於簡單的異步處理,不需要借助線程和Handler即可實現。

AsyncTask是抽象類,它定義了三種泛型類型,即AsyncTask中有三個參數(例如class MyTask extends AsyncTask<參數1 , 參數2 ,參數3>{}):

參數1:向後台任務的執行方法傳遞參數的類型;

參數2:在後台任務執行過程中,要求主UI線程處理中間狀態,通常是一些UI處理中傳遞的參數類型;

參數3:後台任務執行完返回時的參數類型。

其中參數1和參數2是一個泛型參數,即可變數組參數,例如String…,相當於String[]。傳參數時可傳可不傳,傳的話可以使一個個並列地傳,也可以直接是一個數組。

AsyncTask的執行分為四個步驟,每一步都對應一個回調方法,這些方法不應該有程序調用,開發者需要重寫這些方法:

1、 實例化AsyncTask:

MyTask task = new MyTask(this);

2、實現AsyncTask中定義的如下方法,下面是按照執行順序列出的:

1)、onPreExecute():運行於UI線程,該方法將在執行實際的後台操作前被調用。可以在該方法中做一些准備工作,例如在界面上顯示一個進度條反映當前任務執行的進度;

2)、doInBackground(Params…):該方法運行在後台線程中,主要負責執行那些很耗時的後台計算下載工作,也是使用AsyncTask必須重寫的一個方法。我們可以在其中調用publishProgress方法來更新任務的進度。

3)、onProgressUpdate(Progress…):運行於UI線程,在publishProgress方法被調用後執行,將任務進度顯示在界面上;

4)、onPostExecute():運行於UI線程,顧名思義,該方法在doInBackground執行完後,後台的計算結果將通過該方法傳遞到UI線程;

5)、onCancelled():運行於UI線程,該方法也可以不重寫,主要用來當用戶按取消按鈕後,退出後台任務使用。

為了正確的使用AsyncTask類,以下是幾條必須遵守的准則:

1、 Task的實例化必須在UI線程中創建;

2、 Execute方法必須在UI線程中調用;

3、 不要手動調用onPreExecute()、onPostExecute(Result)、doInBackground(Params…)、onProgressUpdate(Progress)這幾個方法;

4、 該Task只能被執行一次,否則多次調用時將會出現異常

注意:Task只能被執行一次,也就是說只能調用一次Task.execute()方法,如果想再次調用,必須重新實例化這個類。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-05/102297p2.htm

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2014年資料/5月/26日/Android異步操作----AsyncTask類

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

Copyright © Linux教程網 All Rights Reserved