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 源码的一点体会,稍作整理,理解起来会比较清晰一点。

你可能感兴趣的:(Android)