本文主要围绕AsyncTask的源码对其进行原理分析,帮助理解AsyncTask工作流程以及更好的运用, 若发现错误的地方望告知
1 | new AsyncTask<String, String, String>() { |
要想启动AsyncTask我们就必须执行execute的方法, 那我们就从这个函数开始 代码如下:
1 | public final AsyncTask<Params, Progress, Result> execute(Params... params) { |
FutureTask类中接收的是Callable的类型, 其实WorkerRunnable类型实现了Callable的类型. 代码如下
1 | public FutureTask(Callable<V> callable) { |
在AsyncTask的构造函数中, mWorker对象初始化时, 已经覆盖了call方法, 代码如下
1 | protected void done() { |
最后我们来看看在handler里的逻辑处理
1 | private static class InternalHandler extends Handler { |