關于Android AsyncTask的一些總結

jopen 10年前發布 | 16K 次閱讀 Android Android開發 移動開發

     //實現異步的內部類

    /       第一個參數:String        傳入:在調用該類對象時傳入的參數       如:MyTask myTask=new MyTask(Context) myTask.execute(string)       調用:doInBackground(String... strings)       strings是這個參數,通常用strings[0]使用              第二個參數:Integer 更新進度的參數        傳入:調用publishProgress(int);傳入       調用:onProgressUpdate(Integer... values)調用       values是這個參數,values[0]使用              第三個參數:外部線程doInBackground(String... strings)執行的結果,是        這個方法的返回值       傳入:給doInBackground()設置的返回值就是這個參數       調用:onPostExecute(String s)調用       s 是這個參數      /     class  MyTask  extends AsyncTask< String, Integer, String > {         private Context context;         ProgressDialog pdialog;         /         構造方法         可以在這初始化一些變量         /         public MyTask(Context context){             this.context=context;         }         /**          該方法將在執行實際的后臺操作前被UI thread調用。          可以在該方法中做一些準備工作,如在界面上顯示一個進度條          /         protected void onPreExecute() {             pdialog=new  ProgressDialog(context, 0);             super.onPreExecute();         }

        /*         該方法運行在后臺線程中。         這里將主要負責執行那些很耗時的后臺計算工作。         可以調用 publishProgress方法來更新實時的任務進度。         該方法是抽象方法,子類必須實現。         /         protected String doInBackground(String... strings) {             for(int i=0;i<100;i++){                 try {                     //publishProgress這個方法                     //會獲取實時進度傳遞給onProgressUpdate                     publishProgress(i);                     Thread.sleep(100);                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }

            return null;         }         /*         在publishProgress方法被調用后,         UI thread將調用這個方法從而在界面上展示任務的進展情況,         例如通過一個進度條進行展示。          /         protected   void  onProgressUpdate(Integer... values) {             pdialog.setProgress(values[0]);//在這里更新進度條         }

       /*        在doInBackground 執行完成后,        onPostExecute 方法將被UI thread調用,        后臺的計算結果將通過該方法傳遞到UI thread.        /         protected void onPostExecute(String s) {             //顯示結果的地方             super.onPostExecute(s);         }     }</pre>

運行順序:從上到下

onPreExecute() 

doInBackground(String... strings) 

onProgressUpdate(Integer... values) //在publishProgress方法被調用后才調用

onPostExecute(String s)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!