TaskManager

Project Url: iqiyi/TaskManager
Introduction: TaskManager 项目是爱奇艺 Android 团队在做启动优化过程中沉淀的一套任务调度管理库。支持关系依赖,任务兜底策略等,API 灵活易用,稳定可靠。已在爱奇艺家族中广泛使用。
More: Author   ReportBugs   
Tags:
Task manager is an Android task management tool. It is capable of handling complex task work flow. It's low-coupling, flexible & stable. It supports relation-based tasks. All tasks will be executed in a well-managed order. It can submit tasks with complex relations such as “Or Dependency” or “And Dependency”. Meanwhile, parallel tasks and serial tasks are also supported.

Supported Features

   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.

1. Task dispatcher:

  • Dispatch task to UI thread or background thread
  • Dispatch task to run on background thread in FIFO order (behaves like background thread Handler ).
  • Submit a group of tasks, to run in parallell. (ParallellTask)
  • To run a task periodically. (TickTask)
  • Run task while idle. (Task.enableIdleRun)

img

2. Event & Data Dispatcher:

img

3. Advantages:

a) Change serial tasks into parallel tasks by adding task dependencies, so that we can run several tasks in the same time.

img

b) Task execute guarantee: Call “TM.needTaskSync” before your business running. In order to make sure your tasks prerequisites are proper loaded.

img

c) Task recursive dependency testing: In debug mode , task recursive test will be executed in order to avoid some wrong relationship been set to tasks.

Getting Started

add dependencies in your "build.gradle" file

dependencies {
    implementation 'com.iqiyi.taskmanager:taskmanager:1.3.7'
}

Developer Guide

TaskAnalyze

  • TaskAnalyze: Please refer to Task Analyze(任务分析) function in Lens.
  • TaskRecode: See iqiyi/Lens DataDump Function to check TM task status; You can find running tasks ,finished tasks & task bloking time on DataDump panel.
    LensUtil.setDumper(MyDumpFactory.class);
    
    @Override
      public ILogDumper create() {
          return AnnotationLogDumper.create(this)
          // Dump.class:注解类;
          //LensApp.getInstance(): 查询注解的单例对象
          //StaticDump.class:查询带注静态方法的类
                  .add(Dump.class, LensApp.getInstance(), StaticDump.class)
          //"TM" : 别名
          //TMDump.class:注解类;
          // TaskManager.getInstance():查询注解的单例对象
                  .add("TM",TMDump.class, TaskManager.getInstance(), TaskRecorder.class);
      }
    

License

TaskManager is Apache v2.0 Licensed.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools