Asynctask解析以及注意事项
说到AsyncTask这个类,好多人其实不太了解。最近看了下代码,把心得分享给大家。 AsyncTask的execute的执行流程为 先调用ThreadPoolExecutor.execute(mFuture); 然后ThreadPoolExecutor.execute(mFuture) 会调用ThreadPoolExecutor.addWorker(mFuture); 最后ThreadPoolExecutor.addWorker(mFuture)会调用mFuture的run()方法,run方法中就是该线程要执行操作的地方 到此我们来关注一下mFuture,AsyncTask中的mFuture是一个FutureTask,FutureTask实现了Future<V>, Runnable两个接口, Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果,计算完成后只能使用 get 方法来获取结果。 mFuture以mWorker作为参数 现看mFuture的构造方法: public void run() { sync.innerRun(); } sync是什么呢?Sync类是一个内部类,我们看看它的初始化 public FutureTask(Callable<V> callable) { if (callable == null)