我已经看到很多示例,这些示例使用作业作为在销毁viewmodel时取消协程的一种方法。
class SetupViewModel : ViewModel() {
private val completableJob = Job()
private val coroutineScope = CoroutineScope(Dispatchers.IO + completableJob)
override fun onCleared() {
super.onCleared()
completableJob.cancel()
}
}
对我来说奇怪的是,似乎没有人使用coroutineScope来做到这一点。我认为这应该更容易并且代码更少。任何想法?
class SetupViewModel : ViewModel() {
private val coroutineScope = CoroutineScope(Dispatchers.IO)
override fun onCleared() {
super.onCleared()
coroutineScope.cancel()
}
}
答案 0 :(得分:1)
您可以轻松使用lifecycle-viewmodel-ktx
并使用库已定义的viewModelScope
,并且不需要覆盖onCleared
,请阅读更多here
答案 1 :(得分:0)
我认为您的处理方法实际上是正确的。确切的问题是什么?