【发布时间】:2021-08-28 23:29:49
【问题描述】:
是在 ViewModel 中启动协程更好,还是在 ViewModel 函数中使用suspend 修饰符标记并在 Activity/Fragment 本身中启动协程?
在 ViewModel 中启动:
class MainViewModel: ViewModel() {
fun addNewItem(item: Item) {
viewModelScope.launch {
// Add the item to database
}
}
}
class ItemsFragment: Fragment() {
fun onButtonClick() {
viewModel.addNewItem(Item())
}
}
在 LifeCycleOwner 中启动:
class MainViewModel: ViewModel() {
suspend fun addNewItem(item: Item) {
// Add the item to database
}
}
class ItemsFragment: Fragment() {
fun onButtonClick() {
lifecycleScope.launchWhenStarted {
viewModel.addNewItem(Item())
}
}
}
【问题讨论】:
标签: android kotlin kotlin-coroutines android-viewmodel coroutinescope