Android AsyncTask使用又一例
Android AsyncTask使用又一例
主线程中:
ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView,progressBar);
asyncTask.execute(1000);
相关阅读:Android AsyncTask的使用详解
- 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);
- }
- }
评论暂时关闭