Android AsyncTask使用又一例


主线程中:

ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView,progressBar);

asyncTask.execute(1000);

相关阅读:Android AsyncTask的使用详解

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

相关内容