在Application里简简单单的启动不同的任务在不同的线程
AndroidX 请使用
implementation 'com.github.flalaorg:DessertTask:$version'
Android-support 请使用implementation 'com.github.flalaorg:DessertTask-Android:$version'
- 如何初始化,我们推荐以下方式进行初始化
DessertDispatcher.init(this)
- 获取 DessertDispatcher 实例
// 链式调用
DessertDispatcher.init(this)
.build()
或者
// 获取实例
DessertDispatcher.getInstance()
- 现在你可以任你喜欢的添加Task了
create(Class<Interface>, InterfaceImpl())
// 例如
create(ITask::class.java, TaskImpl())
或者
//DessertTask 是抽象的你需要继承他, 然后在 addTask 时使用子类
addTask(DessertTask())
// 例如
addTask(TaskOne())
或者
addTask(easyTask {
Log.d("EasyTask wow", "Start: ${Thread.currentThread().name}")
})
- 结束你应该使用
start()
去启动Task - 全部流程例子
DessertDispatcher.init(this)
.build()
.create(ITask::class.java, TaskImpl())
.addTask(TaskOne())
.addTask(easyTask {
Log.d("EasyTask wow", "Start: ${Thread.currentThread().name}")
})
.start()
priority
优先级范围, 可以根据 Task 重要程度和工作量指定;之后根据实际情况决定是否有必要放更大needRunAsSoon
是否需要尽快运行runOn
Task 执行所在的线程池,可以指定,一般默认dependOn
依赖的TaskdependOnByName
依赖的Task的方法名或者类名(方法名需要使用create(Class<Interface>, InterfaceImpl())
里的方法名)needWait
异步线程执行的 Task 是否需要在被调用 await 时进行等待,默认不需要runOnMainThread
是否在主线程执行onlyInMainProcess
是否只在主进程进行tailRunnable
主任务执行完成之后需要执行的任务needCall
Task是否需要回调现在更推荐使用tailRunnable
,因为目前callback是在任务完成后调用callback
执行的回调现在更推荐使用tailRunnable
,因为目前callback是在任务完成后调用
@Task
用来标记方法,这个方法会被转换成DessertTask
@TaskConfig
Task的各种属性设置
priority
只能在Priorities.THREAD_PRIORITY_FOREGROUND
、Priorities.THREAD_PRIORITY_BACKGROUND
、Priorities.THREAD_PRIORITY_LOWEST
中选择runOnExecute
同意义于runOn
, 不过只能使用Executors.IO
和Executors.CPU
dependOn
同意义于dependonByName
tailRunnable
对应的@TaskTailRunnable
内使用的 nametargetCallback
对应的@TaskCallback
内使用的 name
@TaskCallback
用来标记方法,这个方法会被转换成callback
@TaskTailRunnable
用来标记方法,这个方法会被转换成tailRunnable