美文网首页Android知识
一个AsyncTask的替代方案—AsyncTaskSchedu

一个AsyncTask的替代方案—AsyncTaskSchedu

作者: SilenceDut | 来源:发表于2016-07-24 00:08 被阅读862次

详细解读AsyncTask的黑暗面以及一种替代方案介绍了AsyncTask的一些注意事项以及存在的问题,参照AsyncTask写了一个库AsyncTaskScheduler

特点

  • 默认多个任务并行处理。
  • 执行单个任务无需使用线程池。
  • 支持自定义线程池。
  • 支持错误处。
  • 多个任务的管理管理方便。
  • 支持任何线程处使用,结果都会在UI线程处理。

方法介绍

很多方法都是和AsyncTask类似。

  • doInBackground
  • onProgressUpdate
  • onExecuteSucceed
  • onExecuteCancelled
  • onExecuteFailed
    发生异常时回调

使用

1.单个任务——是在单个线程里执行,不需要线程池。

SingleAsyncTask singleTask = new SingleAsyncTask<Void,String>() {   
    @Override    
    public String doInBackground() {   
        return null;   
    }
   @Override
   public void onExecuteSucceed(String result) {      
       super.onExecuteSucceed(result);      
   }
   @Override
   public void onExecuteFailed(Exception exception) {      
       super.onExecuteFailed(exception);    
       Log.i(TAG,"onExecuteCancelled:"+exception.getMessage()+Thread.currentThread());
   }
};
singleTask.executeSingle();

//取消通过executeSingle执行的任务
 mSingleAsyncTask.cancel(true);

2.多个任务

//多个任务新建一个任务调度器
AsyncTaskScheduler mAsyncTaskScheduler = new AsyncTaskScheduler();

SingleAsyncTask singleTask1 = new  SingleTask() { ... };
SingleAsyncTask singleTask2 = new  SingleTask() { ... };
SingleAsyncTask singleTask3 = new  SingleTask() { ... };
...

//并行执行多个任务
mAsyncTaskScheduler.execute(singleTask1)
.execute(singleTask2).execute(singleTask3).

//设置默认的线程池
Executor defaultPoolExecutor = ...
AsyncTaskScheduler mAsyncTaskScheduler = new AsyncTaskScheduler(Executor defaultPoolExecutor);

 //取消通过AsyncTaskScheduler任务
mAsyncTaskScheduler.cancelAllTasks(true);

3.确保正确的取消任务以防止避免内存泄露或其他问题

相关文章

  • 一个AsyncTask的替代方案—AsyncTaskSchedu

    详细解读AsyncTask的黑暗面以及一种替代方案介绍了AsyncTask的一些注意事项以及存在的问题,参照Asy...

  • Android升级常见问题

    1、AsyncTask替代方案 @deprecated Use the standard java.util.c...

  • AsyncTask源码分析

    AsyncTask大家都不会陌生吧,当然现在有比如RxJava这种替代方案,但是AsyncTask我们还是要去分析...

  • 【Android】使用更好的解决方案替代 AsyncTask

    前言:AsyncTask 负责在 Android 中执行异步任务,它允许我们以非线程阻塞的方式执行操作。但是在 A...

  • 写给30的日记

    没有完美的替代方案,如果是替代方案的话尽量不要花钱

  • 替代方案

    以前我做研发经理的时候,我对下面的工程师往往会提出一个要求。就是你做了你的方案,你必须告诉我,你的方案b,甚至是方...

  • 替代方案

    1、专门系统   2790测试系统是一个专门针对性的组合系统。  这些高电压、多通道电阻测量解决方案可加快并简化安...

  • 你真的了解RxJava的线程切换吗?

    使用RxJava可以轻松地实现线程切换,所以在Android中常被用来替代AsyncTask、Handler等原生...

  • 主页

    Mattermost是一个开源的,Slack替代产品 作为专有SaaS消息传递的替代方案,Mattermost将您...

  • 安卓AsyncTask发送单个或多个网络请求(串行)

    目标 采用AsyncTask,发送单个或多个网络请求(串行),并更新UI. 实现方案 发送单个网络请求方案 修改a...

网友评论

    本文标题:一个AsyncTask的替代方案—AsyncTaskSchedu

    本文链接:https://www.haomeiwen.com/subject/bujwjttx.html