android中的经常用到多线程任务做一些耗时操作,如网络获取图片,网络数据交换等,通常在单独的线程中完成这个任务。sdk提供了封装好的异步任务的类AsyncTask ,asynctask内部实现了多线程的管理,开发者不用关心对多线程的管理任务,只要实现任务的业务即可。
主要的成员变量:sHandler:实现主线程和任务线程的消息传递,实现在主线程进度更新和任务结束的处理。
mWorker对任务的定义
mFuture 对任务的包装,在任务完成后给用户提供时机通知ui线程任务结束了,主要是回调函数done()
SERIAL_executor实现任务串行的放入线程池中,在任务结束之后,或者任务执行中出现异常之后,开始调度下一个任务。
public synchronized void execute(final Runnable r) {
mTasks.offer(new Runnable() {
public void run() {
try {
r.run();
} finally {
scheduleNext();
}
}
});
if (mActive == null) {
scheduleNext();
}
}
thread_POOL_EXECUTOR 任务真正执行的地方,开始线程执行任务,以及控制任务处理的流程doingbangckground,done,等