# OptimusAsyncTask
基于 kotlin Channel 的优先级异步任务队列
适合于排队执行的任务实现,比如直播间动画排队播放。
# 导入
```gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.EspoirX:OptimusAsyncTask:v1.5'
}
```
[![](https://jitpack.io/v/EspoirX/OptimusAsyncTask.svg)](https://jitpack.io/#EspoirX/OptimusAsyncTask)
# 特点:
1. 基于 kotlin Channel 实现
2. 可设置优先级
3. 使用简单
<a href="art/WechatIMG3.jpeg"><img src="art/WechatIMG3.jpeg" width="30%"/></a>
<a href="art/WechatIMG4.jpeg"><img src="art/WechatIMG4.jpeg" width="30%"/></a>
# 介绍
OptimusAsyncTask 将每个任务抽象成 OptimusTask,OptimusTask 可以设置任务执行时间,任务优先级,获取任务状态等。
同时 OptimusAsyncTask 提供了 OptimusTask 的默认实现类 BaseOptimusTask,它实现了 Comparable 接口,任务按照优先级排序。
**优先级 TaskPriority**
优先级的标准如下:
TaskPriority.LOW < TaskPriority.DEFAULT < TaskPriority.HIGH
当优先级相同 按照插入次序排队
默认优先级是 TaskPriority.DEFAULT
**任务**
任务种类可分为 2 种,分别是 执行时间不确定 的任务和 执行时间确定 的任务。执行时间不确定的任务在任务执行完后需要调用
doNextTask() 方法执行下一个任务,否则会一直挂起。
执行时间确定的任务需要重写 getDuration() 方法返回具体的执行时间,单位是毫秒,执行时间到了会自动执行下一个任务。
# 使用方法
1. 创建执行时间不确定的任务
```kotlin
private class Task1(var textView: TextView) : OptimusTask() {
@SuppressLint("SetTextI18n")
override fun doTask() {
textView.text = "执行时间不确定的任务-> " + getSequence()
//模拟该任务耗时两秒
textView.postDelayed({
doNextTask() //执行下一个
}, 2000)
}
override fun finishTask() {
Log.i("Task1", "finishTask-> " + getSequence())
}
}
```
2. 创建执行时间确定的任务
```kotlin
private class Task2(var textView: TextView) : OptimusTask() {
@SuppressLint("SetTextI18n")
override fun doTask() {
textView.text = "执行时间确定的任务-> " + getSequence()
}
//确定该任务耗时时间
override fun getDuration(): Long {
return 2000
}
override fun finishTask() {
Log.i("Task1", "finishTask-> " + getSequence())
}
}
```
3. 通过任务管理器 OptimusTaskManager 开始执行任务
一个 OptimusTaskManager 管理着一个任务队列。
```kotlin
val taskManager1 = OptimusTaskManager()
val taskManager2 = OptimusTaskManager()
```
更多例子请查看 demo。
没有合适的资源?快使用搜索试试~ 我知道了~
基于 kotlin Channel 的优先级异步任务队列
共55个文件
xml:21个
png:10个
kt:6个
需积分: 2 0 下载量 58 浏览量
2024-04-12
10:21:02
上传
评论
收藏 281KB ZIP 举报
温馨提示
介绍 OptimusAsyncTask 将每个任务抽象成 OptimusTask,OptimusTask 可以设置任务执行时间,任务优先级,获取任务状态等。 同时 OptimusAsyncTask 提供了 OptimusTask 的默认实现类 BaseOptimusTask,它实现了 Comparable 接口,任务按照优先级排序。 优先级 TaskPriority 优先级的标准如下: TaskPriority.LOW < TaskPriority.DEFAULT < TaskPriority.HIGH 当优先级相同 按照插入次序排队 默认优先级是 TaskPriority.DEFAULT 任务 任务种类可分为 2 种,分别是 执行时间不确定 的任务和 执行时间确定 的任务。执行时间不确定的任务在任务执行完后需要调用 doNextTask() 方法执行下一个任务,否则会一直挂起。 执行时间确定的任务需要重写 getDuration() 方法返回具体的执行时间,单位是毫秒,执行时间到了会自动执行下一个任务。
资源推荐
资源详情
资源评论
收起资源包目录
OptimusAsyncTask-master.zip (55个子文件)
OptimusAsyncTask-master
gradle.properties 1KB
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 232B
art
WechatIMG3.jpeg 94KB
WechatIMG4.jpeg 79KB
optimustask
src
main
java
com
espoir
optimustask
TaskPriority.kt 149B
OptimusTask.kt 2KB
OptimusTaskManager.kt 5KB
IOptimusTask.kt 935B
TaskQueueManager.kt 1KB
res
values
strings.xml 79B
AndroidManifest.xml 109B
proguard-rules.pro 751B
build.gradle 782B
consumer-rules.pro 0B
.gitignore 7B
app
src
main
java
com
espoir
optimusasynctask
MainActivity.kt 3KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
values
colors.xml 208B
strings.xml 79B
styles.xml 383B
layout
activity_main.xml 3KB
drawable
ic_launcher_background.xml 5KB
AndroidManifest.xml 769B
proguard-rules.pro 751B
build.gradle 979B
.gitignore 7B
gradlew.bat 2KB
build.gradle 685B
.idea
jarRepositories.xml 1KB
dictionaries
lizixian.xml 147B
codeStyles
codeStyleConfig.xml 142B
Project.xml 4KB
vcs.xml 180B
misc.xml 779B
compiler.xml 169B
checkstyle-idea.xml 610B
gradle.xml 784B
kotlinc.xml 175B
settings.gradle 67B
gradlew 5KB
.gitignore 208B
README.md 3KB
共 55 条
- 1
资源评论
进击的代码家
- 粉丝: 2203
- 资源: 204
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功