AsyncTask 中的 publishProgress 方法

在抽象类 AsyncTask 中的 publishProgress 方法中,有这么一句:
getHandler ().obtainMessage( MESSAGE_POST_PROGRESS ,
new  AsyncTaskResult< Progress >( this , values)).sendToTarget();

那么 obtainMessage 会从消息池中取出一个Message对象,记为 m;
getHandler 会得到一个 Handler 对象,记为 h。
那么这个 h 将作为这个 m 的 target. 
然后 m 调用 sendToTarget 方法将导致 h 发出 m 这条消息。

简单来说, 一个 Handler 对象的 obtainMessage 方法将得到一个 Message 对象,以该 Handler 对象作为 target.

同时,上面 new 出来的 AsyncTaskResult 对象将作为 m 的 obj,我把这个 AsyncTaskResult 对象记为 atr 好不好?
那么这个 atr 对象它里面有一个属性,mTask,被赋值为上面传入的 this,也就是当前的 AsyncTask 对象。

由于发出的消息 m 的 what 属性值为 
MESSAGE_POST_PROGRESS ,将导致当前 AsyncTask 对象的 onProgressUpdate 回调方法被执行。
 
以上是我刚才阅读 Android 源码的一点体会,稍作整理,理解起来会比较清晰一点。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值