爱奇艺开源了一个支持任务依赖关系的任务调度工具库,TaskManager.
API 灵活方便。
Github 地址:https://github.com/iqiyi/TaskManager
简单的任务提交
TM.postAsync(Runnable); // run on background thread TM.postAsyncDelay(Runnable); TM.postUI(Runnable); // run on UI thread TM.postUIDelay(Runnable, int delay); TM.postSerial(Runnable , String groupName);//tasks with same group name , runs in FIFO order. TM.cancelTaskByToken(Object);// cancel tasks with same token.
2. 复杂任务提交(设置依赖关系等)
new Task(){
@Override
public void doTask() {
// your task
}
}.dependOn(R.id.task_1, R.id.task_2) // 或者任务在 task1 与 task2 完成后执行
.orDependOn(R.id.task_3,R.id.task_4)// 或者任务在 task3 与 task4 完成后执行
.orDelay(2000)// 或者 任务在2000ms 后执行。
.postAsync();//提交任务到子线程执行
特点:
- 将任务提交到UI线程或子线程执行。
- 提交任务按照FIFO 顺序执行。(参考 executeSerial)
- 将多个子任务组合成并发任务,并发执行。(ParallelTask)
- 周期性的执行任务。(TickTask)
- 闲时任务调度 (IdleTask , Task.enableIdleRun)
- 事件与数据分发