Android線程通訊模型-AsyncTask類
1.非同步任務類:是對Android中線程通訊模型的封裝。 2.三個泛型 Params:非同步任務輸入參數類型。execute和doInBackground方法的參數類型。 Progress:進度提示類型。publishProgress和onProgressUpdate方法的參數類型。 Result:是非同步任務執行的結果類型。 3.主要方法 AsyncTask<Params,Progress,Result> execute(Params... params) void publishProgress(Progress... values) void onPreExecute() void onPostExecute(Result result) void onProgressUpdate(Progress... values) 4.抽象方法 Result doInBackgroud(Params... params) 5.特點 1)每個非同步任務對象只能執行一次 2)同時建立的非同步任務對象最好不要超過10個,否則會降低程式執行的效能。 簡化代碼,示範其主要原理如下: public abstract class MyAsyncTask<Params, Progress, Result> {private Handler handler;public MyAsyncTask() {handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 0:// 進度提示訊息updateProgress((Progress[]) msg.obj);break;case 1:// 非同步任務完成的訊息onPostExecute((Result) msg.obj);break;}}};} // 執行非同步任務public void execute(final Params... params) { onPreExecute();new Thread() {public void run() {Result result = doInBackground(params);Message msg = Message.obtain();msg.what = 1;msg.obj = result;handler.sendMessage(msg);};}.start();}//發布進度提示訊息public void publishProgress(Progress... values) {Message msg = Message.obtain();msg.what = 0;msg.obj = values;handler.sendMessage(msg);}//進度更新方法public void updateProgress(Progress... values){};// 在開始非同步任務前 執行準備工作public void onPreExecute(){};// 在背景工作執行緒中調用的 非同步任務處理方法public abstract Result doInBackground(Params... params);//當非同步任務執行結束後 進行介面更新的方法public void onPostExecute(Result result){};}