-
先看看一段伪代码,以便快速了解 AsyncTask 的架构。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
class MyAsyncTask { private val callable = object : Callable { override fun call(): RESULT { doInBackground() } } private val runnable = object : RunnableFuture { override fun run() { callable.call() } } private val executor = object : Executor { override fun execute(r: Runnable) { r.run() } } abstract fun doInBackground() fun execute() {//执行入口 executor.execute(runnable) } }
-
AsyncTask 的主要逻辑就是上面这些,其他的就是细节了。看完这里的逻辑,再去看源码的话就很容易理解了。
-
进一步深入:下一步可以看看 正确理解 AsyncTask,Looper,Handler三者之间的关系,或者直接看看源码。