Android 的AsyncTask使用


主线程中:

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);
	}
	
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值