Android支持多并发的异步任务框架MultiAsynctask
16lz
2021-01-24
支持多并发的异步任务框架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); }}
更多相关文章
- Android(安卓)surfaceview详解
- Eclipse启动失败Android(安卓)sdk content loader 0%的四种解决
- Android(安卓)studio build.gradle 各种错误解决总结
- Android关于触摸事件跟点击事件两个方法的关系
- Android(安卓)View体系总结
- Android(安卓)属性动画工作原理
- Android消息机制——ThreadLocal(Android艺术开发探索读书笔记)
- android adapter中到converView机制
- Android(安卓)2016年度知名企业公司面试题