Android 的AsyncTask的执行步骤

主线程中:

ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView,progressBar);

asyncTask.execute(1000);

0.importandroid.os.AsyncTask;
  1. importandroid.widget.ProgressBar;
  2. importandroid.widget.TextView;
  3. //生成该类的对象,并调用其execute方法之后
  4. //首先执行的的onPreExecute方法
  5. //其次是执行doInBackground方法
  6. publicclassProgressBarAsyncTaskextendsAsyncTask<Integer,Integer,String>{
  7. privateTextViewtv;
  8. privateProgressBarpb;//接收2个参数
  9. publicProgressBarAsyncTask(TextViewtv,ProgressBarpb){
  10. this.tv=tv;
  11. this.pb=pb;
  12. }
  13. @Override//异步直行的后台方法execute()先执行
  14. protectedStringdoInBackground(Integer...params){//继承的第一个参数类型
  15. inti;
  16. for(i=0;i<=100;i+=10){
  17. try{
  18. Thread.sleep(1000);
  19. publishProgress(i);//该方法会调用onProgressUpdate()以更新UI
  20. }catch(InterruptedExceptione){
  21. e.printStackTrace();
  22. }
  23. }
  24. returni+params[0].intValue()+"";
  25. }
  26. @Override//该方法运行在UI线程中..
  27. protectedvoidonPreExecute(){
  28. tv.setText("开始在UI线程中执行异步操作..");
  29. }
  30. @Override//最后一个参数String类型是doInBackground()的返回值和onPostExecute方法的参数类型,它在doInBackground运行完后再运行,并且运行在UI线程
  31. protectedvoidonPostExecute(Stringresult){
  32. tv.setText("执行异步操作结束.."+result);//result就是doInBackground()的返回值
  33. }
  34. @Override
  35. protectedvoidonProgressUpdate(Integer...values){//继承中的第2个参数的类型
  36. intvalue=values[0];
  37. pb.setSecondaryProgress(value);
  38. }
  39. }

相关文章: