导语
又好久没有登录CSDN了,手痒痒就想挖个坑,于是就有了这个系列篇:<<小猪带你逛源码>>
本系列篇我的构想是,从Android应用开发者的角度需要知道和关注的Android源码,其实主
要是SDK中的源码,如果大家想看Android系统源码的话我推荐大家看看CSDN上老罗的博客,
他总结的非常详细和透彻。
一、概述
假如让你在Android平台上,实现一个异步的网络请求,我相信首先浮现在你脑海中的方案
肯定是AsyncTask。那你有仔细研究过AsyncTask内部的实现原理么?我敢肯定是有不少人没
认真研究过里头的实现原理的。博主我就带大家一起逛逛AsyncTask的源码吧。
二、AsyncTask中的线程池
首先要说明的是,AsyncTask也是通过线程来实现后台任务的。AsyncTask源码中,有两个
这样的变量:
public static final Executor SERIAL_EXECUTOR = new SerialExecutor();
public static final Executor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);
我们先来看THREAD_POOL_EXECUTOR,它是一个线程池对象实例,关于这里构造函数
的几个参数的含义大家可以去参考别的博客,我们这里只要知道THREAD_POOL_EXECUTOR
被new成了一个线程池,这个线程池的容量是5个线程(CORE_POOL_SIZE == 5)。