支持多并发的异步任务框架MultiAsynctask

  • Github地址
    MultiAsynctask源码地址:https://github.com/Y0LANDA/MultiAsynctask

  • 前言
    只要是做Android的应该都知道Asynctask(异步任务)这个类吧,不知道的童鞋也没关系,可以跟着我直接学习这个开源框架,学完,你两个都会啦。

  • 开发背景
    之前写一个Http的框架NoHttp,处理网络请求和主线程交互时使用了系统Asynctask异步任务,但是在处理并发时发现Asynctask只能同时运行一个task,然后去看了下Android2.0-Android5.0的Framwork的源码,发现一个结果:Android2.3以前的版本,也就是API 10及之前的版本,Asynctask可并发任务数量最多是5个,还可能造成结果混乱(来自网络资料),到Android 3.0以后,也就是API 11和以后的版本中又改为同时最多只能运行一个Task,并提供了自定义线程池的方法。因此开发这个可以并发的异步任务框架,可以统一不同版本的异步任务。

  • MultiAsynctask特点

    • 和Asynctask一样的用法和API
    • 可以自定义并发任务个数
    • 默认支持5个任务并发
    • 多任务并发结果不会乱
  • 系统Asynctask
    常用的也就这5个方法,onPreExecute():执行子线程之前,doInBackground():执行子线程,publishProgress():更新任务处理进度,onProgressUpdate():当更新任务处理进度被调用时触发,这个方法在主线程执行,onPostExecute():doInBackground执行完后return时被调用,这个方法在主线程调用
public class MyAsynctask extends AsyncTask<String, Integer, Boolean> {    @Override    protected void onPreExecute() {        super.onPreExecute();    }    @Override    protected Boolean doInBackground(String... params) {        publishProgress(1);        return null;    }    @Override    protected void onProgressUpdate(Integer... values) {        super.onProgressUpdate(values);    }    @Override    protected void onPostExecute(Boolean result) {        super.onPostExecute(result);    }}
  • 多任务并发MultiAsynctask
    常用的也是5个方法,onPrepare():执行子线程之前准备工作,onTask():执行子线程,postUpdate():提交更新,onUpdate():当提交更新被调用时触发,这个方法在主线程执行,onResult():onTask执行完后return时被调用,这个方法在主线程调用
    是不是觉得和系统的方法都一样?就是这么方便简单!
    注意亮点来了,童鞋们,有没有看到构造方法super(10);这里可以指定同时并发任务数量,当然你完全可以使用系统的默认5个的,不用super(int);这个构造。
public class MyAsynctask extends MultiAsynctask<String, Integer, Boolean> {    public MyAsynctask() {        super(10);    }    @Override    public void onPrepare() {        super.onPrepare();    }    @Override    public Boolean onTask(String... params) {        postUpdate(1);        return null;    }    @Override    public void onUpdate(Integer update) {        super.onUpdate(update);    }    @Override    public void onResult(Boolean result) {        super.onResult(result);    }}

更多相关文章

  1. Android(安卓)surfaceview详解
  2. Eclipse启动失败Android(安卓)sdk content loader 0%的四种解决
  3. Android(安卓)studio build.gradle 各种错误解决总结
  4. Android关于触摸事件跟点击事件两个方法的关系
  5. Android(安卓)View体系总结
  6. Android(安卓)属性动画工作原理
  7. Android消息机制——ThreadLocal(Android艺术开发探索读书笔记)
  8. android adapter中到converView机制
  9. Android(安卓)2016年度知名企业公司面试题

随机推荐

  1. androidのPULL方式解析XML
  2. android消息机制总结
  3. Android中触摸事件传递机制
  4. 杭州_大雲架構師_培訓課程
  5. Android串口通信
  6. Android防重签名和二次打包
  7. Android整合Maven笔记(一)——在Android项
  8. Android中系统触摸相关辅助类总结
  9. IOS/Android(安卓)移动端原生及自定义控
  10. Android之adb的使用