【发布时间】:2021-02-24 12:13:16
【问题描述】:
在Android + kotlin中抑制多次调用协程有什么好主意吗?
我编写了以下代码。它适用于我的目的,但我想知道是否有更聪明的方法来编写它。
class MainViewModel : ViewModel() {
private val mutex = Mutex()
private var job : Job? = null
fun processCoroutine() {
viewModelScope.launch {
mutex.withLock {
if (job == null) {
job = viewModelScope.launch {
// heavy process
mutex.withLock {
job = null
}
}
}
}
}
}
}
【问题讨论】:
-
我实际上已经尝试过建议的代码。 github.com/Nunocky/CoroutineStudy01 其中一些需要一些修改,但它们都工作稳定:-D