主线程中:
ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView,progressBar);
asyncTask.execute(1000);
import android.os.AsyncTask;
import android.widget.ProgressBar;
import android.widget.TextView;
//生成该类的对象,并调用其execute方法之后
//首先执行的的onPreExecute方法
//其次是执行doInBackground方法
public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> {
private TextView tv;
private ProgressBar pb ; //接收2个参数
public ProgressBarAsyncTask(TextView tv, ProgressBar pb) {
this.tv = tv;
this.pb = pb;
}
@Override //异步直行的后台方法execute()先执行
protected String doInBackground(Integer... params) { //继承的第一个参数类型
int i;
for(i=0;i<=100;i+=10){
try {
Thread.sleep(1000);
publishProgress(i); //该方法会调用onProgressUpdate()以更新UI
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return i+params[0].intValue()+"";
}
@Override //该方法运行在UI线程中..
protected void onPreExecute() {
tv.setText("开始在UI线程中执行异步操作..");
}
@Override //最后一个参数String类型是doInBackground()的返回值和onPostExecute方法的参数类型,它在doInBackground运行完后再运行,并且运行在UI线程
protected void onPostExecute(String result) {
tv.setText("执行异步操作结束.."+ result); //result就是doInBackground()的返回值
}
@Override
protected void onProgressUpdate(Integer... values) { //继承中的第2个参数的类型
int value = values[0];
pb.setSecondaryProgress(value);
}
}