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