为什么要使用异步任务


 
 >1,在Ui线程不能做阻塞操作  (在主线程阻塞超过5s程序出错  "程序无反应")  4.0以后  不允许在主线程下载
 >2,在主线程以外的线程(子线程)不能更新UI


  * 1,创建一个类 继承AsyncTask,同时声明三个参数
  * Params:子线程执行方法里参数类型
  * Progress;子线程执行任务的进度类型 如果不想展示进度  Void
  * Result:子线程执行任务的结果类型
  *
  * 2,实现核心方法
  * doInBackground(String... params){}
  *
  * onPostExecute(byte[] result)
  *
  * 3,在主线程中执行异步请求


 >完整的AsyncTask
 public class MyAsyncTask extends AsyncTask<String, Integer, List<String>>{
  
  /**
   * 在首次执行异步任务时  调用此方法   做初始化操作
   */
  @Override
  protected void onPreExecute() {
   // TODO Auto-generated method stub
   super.onPreExecute();
  }

  /**
   * 在子线程中执行   做耗时操作
   */
  @Override
  protected List<String> doInBackground(String... params) {
   // TODO Auto-generated method stub
   //publishProgress(values)
   return null;
  }
  /**
   * 更新进度的方法   在doInBackground中 执行publishProgress(values)  将进度值发送给onProgressUpdate
   */
  @Override
  protected void onProgressUpdate(Integer... values) {
   // TODO Auto-generated method stub
   super.onProgressUpdate(values);
  }
  
  /**
   * 在主线程中更新UI 在执行完doInBackground之后执行 onPostExecute
   */
  @Override
  protected void onPostExecute(List<String> result) {
   // TODO Auto-generated method stub
   super.onPostExecute(result);
  }
  
  
  //点击其他按钮  取消AsyncTask时  执行此方法
  @Override
  protected void onCancelled(List<String> result) {
   // TODO Auto-generated method stub
   super.onCancelled(result);
  }
  
  
  
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值