码迷,mamicode.com
首页 > 移动开发 > 详细

Android源码——AsynTask

时间:2016-08-03 20:05:23      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

AsyncTask<Params, Progress, Result>中三个参数为:
Params         输入数据
Progress       过程数据
Result           结果数据
 
工作队列 LinkedlockingQueue 的特性
     线程从空的LinkedlockingQueue中取任务执行,线程会被阻塞;
     线程向一个满的LinkedlockingQueue中添加任务,同样会被阻塞。
 
onProgressUpdate 和 onPostExecute执行与界面相关的操作。
 
InternalHandler:
case MESSAGE_POST_RESULT:
     result.mTask.finish(result.mData[0]);
 
case MESSAGE_POST_PROGRESS:
     result.mTask.onProgressUpdate(result.mData);
 
case MESSAGE_POST_CANCEL:
     result.mTask.onCancelled();
 
 
异步任务的创建过程:
 
 
执行过程:
调用execute方法
在执行过程中,会调用内部一个Callable对象的成员函数call来执行一个具体工作任务
具体任务的执行在doInBackground中
如果异步任务需要执行与界面相关的操作,需要调用publishProgress,该方法会想想sHandler发送一个 MESSAGE_POST_PROGRESS消息,交给 onProgressUpdate来处理。
FutureTask成员函数done被调用
done首先调用AsynTask.get方法获取当前工作任务的结果数据,并将其封装为 MESSAGE_POST_RESULT消息
AsynTask.finish方法处理 MESSAGE_POST_RESULT消息。
 

Android源码——AsynTask

标签:

原文地址:http://www.cnblogs.com/ithaibo-sit/p/5734109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!