Android 的AsyncTask的执行步骤

来源:互联网 发布:淘宝店怎么增加粉丝 编辑:程序博客网 时间:2024/05/16 02:04
 


主线程中:

ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView,progressBar);

asyncTask.execute(1000);

    0.  import android.os.AsyncTask;  
  1. import android.widget.ProgressBar;  
  2. import android.widget.TextView;  
  3.   
  4.   
  5. //生成该类的对象,并调用其execute方法之后   
  6. //首先执行的的onPreExecute方法   
  7. //其次是执行doInBackground方法   
  8. public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> {  
  9.   
  10.   
  11.     private TextView tv;  
  12.     private ProgressBar pb ;  //接收2个参数  
  13.       
  14.     public ProgressBarAsyncTask(TextView tv, ProgressBar pb) {  
  15.         this.tv = tv;  
  16.         this.pb = pb;  
  17.     }  
  18.     @Override   //异步直行的后台方法execute()先执行   
  19.     protected String doInBackground(Integer... params) {  //继承的第一个参数类型  
  20.         int i;  
  21.         for(i=0;i<=100;i+=10){  
  22.             try {  
  23.                 Thread.sleep(1000);  
  24.                 publishProgress(i);   //该方法会调用onProgressUpdate()以更新UI  
  25.             } catch (InterruptedException e) {  
  26.                 e.printStackTrace();  
  27.             }  
  28.         }  
  29.         return i+params[0].intValue()+"";  
  30.     }  
  31.   
  32.   
  33.     @Override  //该方法运行在UI线程中..  
  34.     protected void onPreExecute() {  
  35.         tv.setText("开始在UI线程中执行异步操作..");  
  36.     }  
  37.   
  38.   
  39.       
  40.     @Override  //最后一个参数String类型是doInBackground()的返回值和onPostExecute方法的参数类型,它在doInBackground运行完后再运行,并且运行在UI线程  
  41.     protected void onPostExecute(String result) {  
  42.         tv.setText("执行异步操作结束.."+ result);  //result就是doInBackground()的返回值  
  43.     }  
  44.   
  45.   
  46.     @Override  
  47.     protected void onProgressUpdate(Integer... values) { //继承中的第2个参数的类型  
  48.         int value = values[0];  
  49.         pb.setSecondaryProgress(value);  
  50.     }  
  51.       
  52. }  
原创粉丝点击