源码解析-AsyncTask

Posted on By Vivian Sun

用法

  • 继承AsyncTask,重载方法
  • 调用execute启动

解析总结

核心流程

  • 在主线程提交任务到线程池
  • 线程池运行doInBackground耗时任务
  • 线程池运行完毕后,使用Handler切换到主线程处理结果

  • AsyncTask中CORE_POOL_SIZE大于2小于4:Math.max(2, Math.min(CPU_COUNT - 1, 4));最大POOL_SIZE CPU_COUNT * 2 + 1
  • AsyncTask如何并行
    • 调用executeOnExecutor,传入线程池代替sDefaultExecutor,例如executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
    • Android5.0是串行执行
    • Android1.6之前和Android3.0之后是串行执行。在这两个版本之间采用的是并行执行

Reference

AsyncTask异步任务 源码解读