首页 > 移动平台 > 详细

Android学习笔记——AsyncTask

时间:2019-03-30 22:19:30      阅读:189      评论:0      收藏:0      [点我收藏+]

  参考 : 《Android进阶之光》

      https://www.jianshu.com/p/ab77a2e83c52

 

 

 

      java中的线程池框架,在android中一样可以使用,但android也有自己的多线程机制

-  AsyncTask

    这是一个异步任务类,含有三个泛型参数 

 

    
三个参数的含义:
      Params : 表示执行AsyncTask时需要传入的参数,可以在后台任务中使用
      Progress : 表示后台任务执行的进度
      Result : 表示后台任务返回结果的类型
      如果不传具体的参数,三个参数也都可以为void       使用方法为用一个类继承AsyncTask并重写几个主要方法:
      onPreExecute() : 运行在主线程               在异步任务执行前被调用               可用于进行界面初始化的操作            doInBackground(Params...params) : 在线程池中执行, 执行于onPreExecute之后,                  用于完成一些耗时任务,执行过程中可以调用publishProgress(Progress...values)来更新界面信息       onProgressUpdate(Progress...values) : 运行在主线程中                   用来响应 publishProgress()方法,通过参数对UI界面进行更新       onPostExecute(Result result) : 在主线程执行                 在后台任务执行完毕后调用,用于进行一些收尾工作或更新界面UI       onCancelled() : 在主线程中调用,               在异步任务被取消时调用,用于UI界面的取消更新        execute(Params...params) : 在主线程中调用               表示开始异步任务,一个异步对象只能调用一次execute()方法       cancel(
boolean) : 在主线程中调用, 表示停止一个异步任务

 

   使用方法:

    创建类 继承 AsyncTask, 重写几个主要方法。

    要开始和结束任务,只需要调用新建类 对象的 execute() 和 cancel()方法即可

 

 AsyncTask 部分代码
  
技术分享图片

 

  WorkRunnable 实现了Callable接口并实现了call 方法,在call方法中调用doInBackgroud执行任务,并最终调用
    PostResult将结果发送出去。
 FutureTask是一个可管理的异步任务,其实现了Runnable和Callable两个接口,所以可以包装它们。
    这里将一个WorkRunnable 交给FutrueTask 进行包装,便于之后的使用。

 当我们调用AsyncTask 的 execute 方法开始执行任务时,execute内部会调用 executeOnExecutor

    

 技术分享图片

 

  这里首先执行了onPreExecute方法,之后将参数传给WorkRunnable对象,因为mFuture之前已经关联mWorker对象,  
  这里直接将mFuture丢给exec执行,(exec是由参数传进来的线程池)
  执行mWorker的call方法最后会跳转到postResult方法,在PostResult方法中,会创建Message对象,之后调用
    message.sendToTarget(),将message发送给Handler处理。



    

Android学习笔记——AsyncTask

原文:https://www.cnblogs.com/xfdmyghdx/p/10627979.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!