如何解决取消运行协程的作业并重用该作业对象
我目前有一个执行某些过程的工作(这需要占用大量CPU,大约需要10秒钟)
但是我想在下一次调用executeProcess()时立即取消它。
private var myJob: Job? = null
fun executeProcess() {
myJob?.cancel()
myJob = scope.launch(Dispatchers.IO) {
//doCPUIntensiveTask()
//This is always Active!
println("isActive $isActive ")
}
}
如果我想重用同一作业对象,怎么办?如果不可能的话,还有其他解决方法吗?
解决方法
- 由于生命周期为Job docs,因此无法重用
- 您可以将
Flow
+flatMapLatest
用于相同的目的Flow docs,flatMapLatest docs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。