从AsyncTask源码理解它的局限性

2018-08-29  本文已影响20人  古宇强

1.AsyncTask的局限性:一般用来执行少量且时间短的任务。

我们知道AsyncTask类中,维护着一个线程池类,而自android 3.2版本起,应用中所有的 AsyncTask 都共用一个线程池类,如果执行大量或时间长的话,可能会造成其他 AsyncTask 的阻塞。

2.找源码

1. 从构造器入手
2. crtl + f 查找 sDefaultExecutor,发现它是一个类变量,类变量,类变量
3.接下来继续 crtl + f 查找 THREAD_POOL_EXECUTOR,可以看到静态代码块里对THREAD_POOL_EXECUTOR进行了初始化,到这里可以看出所有 AsyncTask 都是共用一个线程池的了
4.再了解一点,AsyncTask 线程池的核心线程数和最大线程数都跟 CPU 的数量相关,任务序列的容量大小是128
上一篇 下一篇

猜你喜欢

热点阅读