一、編寫一個類繼承AsyncTask<String,Interger,String>並重寫它的抽象方法:
doInBackground(String... params),//運行在主線程中
根據需要還會重寫其他幾個方法:
onPreExecute();//運行在主線程中
onProgressUpdate(Integer... values);//運行在主線程中
onPostExecute(String s);//運行在主線程中
onCancelled();//運行在主線程中
二、必須在主線程中啓動異步任務,並且這個異步任務對象只能啓動一次,多次啓動會報錯,啓動異步任務的代碼如下:
假如我們自定義的異步任務類的名字叫MyAsyncTask,
new MyAsyncTask.execute(path);//path爲網址;
說明:異步任務執行時函數的執行順序:
1、onPreExecute()====>doInBackground(String... params)====>onPostExecute(String s);
2、如果在doInBackground(String... params)方法中調用了publishProgress(i),則會自動調用onProgressUpdate(Integer... values),此時函數的調用過程爲:onPreExecute()===>onProgressUpdate(Integer... values)===>publishProgress(i)===>onProgressUpdate(Integer... values)====>onPostExecute(String s);
泛型類AsyncTask<String,Integer,String>的三個泛型參數說明:
參數一:啓動異步任務是傳遞的實參的數據類型,也是doInBackground(String... params)形參的數據類型;
參數二:是在doInBackfround(String...params)方法執行中publishProgress(i)方法的實參的數據類型,也是onProgressUpdate(Integer... values)方法中形參的數據類型;
參數三:是doInBackground(String... params)方法返回值得數據類型,也是onPostExecute(String s)方法中形參的數據類型。