【问题标题】:viewModelScope.launch(Dispatchers.IO) purposeviewModelScope.launch(Dispatchers.IO) 用途
【发布时间】:2019-05-03 17:23:49
【问题描述】:

在 codeLabs 教程(Android - Kotlin - Room with a View)中,他们使用“viewModelScope.launch(Dispatchers.IO)”来调用插入方法。它到底是什么以及为什么要使用它。 参考链接,

https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#8

fun insert(word: Word) = viewModelScope.launch(Dispatchers.IO) {
    repository.insert(word)
}

【问题讨论】:

标签: android kotlin viewmodel


【解决方案1】:

viewModelScope 是一个CoroutineScope,它与您的ViewModel 相关联。这意味着当 ViewModel 清除该范围内的协程时,也会取消。

Dispatchers.IO 表示suspend fun repository.insert(word) 将运行在由kotlin 管理的IO 线程中。

有不同的调度。 Dispatchers.IO 用于 IO 工作,如数据库或远程服务器。 Dispatchers.Default 用于 CPU 使用率较高的任务。 Dispatchers.Main 用于需要更新 UI 的任务。

【讨论】:

  • 那么所有的存储库.* 挂起函数都应该使用 Dispatcher.IO 执行吗?
  • @Mike 是的。所有命中数据库的存储库挂起函数都应使用 Dispatchers.IO 执行
猜你喜欢
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2020-04-24
  • 2023-01-16
  • 2019-10-09
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多