Android coroutine viewmodelscope cancel(取消)

问题描述 投票:0回答:2

我看过很多例子,当viewmodel被破坏时,使用job作为取消coroutine的方法。

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()
    }
}
android viewmodel coroutine
2个回答
1
投票

简单的方法,你可以使用 lifecycle-viewmodel-ktx 并使用 viewModelScope 已经由库定义,你不需要覆盖掉 onCleared, 阅读更多 此处


0
投票

我想你的方法其实是正确的。具体的问题是什么?

© www.soinside.com 2019 - 2024. All rights reserved.