需要分别添加以下的依赖包
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
在ViewModel中使用ViewModelScope
为应用程序中的每个ViewModel定义ViewModelScope。如果清除ViewModel,则在此作用域中启动的任何协同程序都将自动取消。
当只有在ViewModel处于活动状态时才需要完成工作时,协程在这里非常有用。
例如,如果要为布局计算某些数据,则应将工作范围设置为ViewModel,以便在清除ViewModel时,自动取消工作以避免消耗资源。
可以通过ViewModel的viewModelScope属性访问ViewModel的协同作用域,如下例所示:
class MyViewModel :ViewModel() {
init {
viewModelScope.launch {
// Coroutine that will be canceled when the ViewModel is cleared.
}
}
}
网友评论