AsyncTask浅谈

1.AsyncTask的源码解析

首先我们从异步任务执行开始,即执行execute()开始分析,将任务放到线程池中执行,线程池中线程都是子线程。我们看executeOnExecutor(sDefaultExecutor,params)执行的函数体。

1.executeOnExecutor的意思就是执行者,这个执行者就是看当前任务有没有需要结束或者需要执行的,如果有就抛出异常,如果没有的话就向下执行。

2.向下调用的是SerialExecutor串行执行器,串行执行器就是为了执行完成任务之后从mTask中取下一个任务,从而实现串行。

3.Future 是中有一个run方法调用WorkRunnable的call方法.

4.call调用doInBackground方法执行子线程,调用publishProgress的完成方法通过intenterHandler消息机制,发送到主线程完成进度。

5.doInBackground执行完成之后执行完执行postResult方法,把结果回调给主线程。

6.让后执行finsh()方法,finsh方法把回调结果返回给onPostExecutor()。

2.AsyncTask的机制原理

1.AsyncTask本身就是一个静态的线程池,AsyncTask派生 的子类可以实现不同的异步任务,这些任务都提交到静态的线程池中执行。

2.线程池中工作方法也就是说子线程,doInBackground主要就是用来执行异步任务的。

3.当任务状态改变之后,工作线程会想UI线程发送消息,AsyncTask的内部会有一个IntenterHandler响应这些消息,并调用相关的回调函数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值