Android协程ViewModelScope取消

时间:2020-06-04 08:42:48

标签: android viewmodel coroutine

我已经看到很多示例,这些示例使用作业作为在销毁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()
    }
}

2 个答案:

答案 0 :(得分:1)

您可以轻松使用lifecycle-viewmodel-ktx并使用库已定义的viewModelScope,并且不需要覆盖onCleared,请阅读更多here

答案 1 :(得分:0)

我认为您的处理方法实际上是正确的。确切的问题是什么?