一、AsyncTask的作用:
代替Thread+Handler的組合,使創建異步任務變得簡單,
Android中AsyncTask使用
。AsyncTask執行后臺操作,并在用戶界面上發布結果,而不必處理線程。
二、AsyncTask的定義:
public abstract class AsyncTask
AsyncTask必須子類可以使用。子類將覆蓋至少一個方法(doInBackground執行異步任務),通常會覆蓋一次(onPostExecute顯示結果,更新UI)
AsyncTask三種類型如下:
》Params,參數的類型發送到任務執行時。
》Progress,在后臺計算過程中公布的進度單元類型。
》Result,計算結果的類型。
不是所有類型都是異步任務所使用的。要標記為未使用的類型,設置該類型Void:
三、AsyncTask的方法:
1、onPreExecute()
在任務開始后立即調用,在UI線程執行。這一步通常用于設置任務,例如在用戶界面中初始化進度條。
2、doInBackground(Params...)
后臺線程調用onPreExecute()完成后立即執行。這一步后臺進程執行,可能會花費很長時間。
3、onProgressUpdate(Progress...)
調用publishProgress,在UI線程上執行,
電腦資料
《Android中AsyncTask使用》(http://www.ipr-jzsc.com)。這種方法是用來顯示用戶進度界面,后臺進程仍在執行。例如,它可用于顯示一個進度條或在文本中顯示日志。4、onPostExecute(Result)
后臺進程處理完后,在UI線程上執行。后臺進程的結果被傳遞到這一步作為參數。
常用的寫法如下:
class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { //執行異步任務 int n = 10; //調用publishProgress公布進度,最后onProgressUpdate方法將被執行 publishProgress(n); Thread.sleep(500); return null; } @Override protected void onPostExecute(String result) { //更新UI,顯示結果 } @Override protected void onProgressUpdate(Integer... values) { //更新進度信息 }
new MyTask().execute();//執行任務
三、AsyncTask的規則:
1、任務實例必須在用戶界面線程中創建。
2、execute(Params... params)方法必須在UI線程中調用。
3、不要手動調用onPreExecute,doInBackground,onProgressUpdate,onPostExecute這些方法
4、一個任務實例只能執行一次,如果執行第二次將會拋出異常