Android知识

一个AsyncTask的替代方案—AsyncTaskSchedu

2016-07-24  本文已影响862人  SilenceDut

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

特点

方法介绍

很多方法都是和AsyncTask类似。

使用

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.确保正确的取消任务以防止避免内存泄露或其他问题

上一篇下一篇

猜你喜欢

热点阅读