gpt4 book ai didi

android - viewModelScope 默认为 MainThread 的原因是什么?

转载 作者:行者123 更新时间:2023-12-05 06:08:02 24 4
gpt4 key购买 nike

当大多数用例都用作后台线程时,viewModelScope 默认为 MainThread 的原因是什么?

在我的项目中,我仍然想不出一个需要在 ViewModel 中使用主线程的示例。

另外,有没有比下面这样写更好/更短的方法?

viewModelScope.launch(Dispatchers.Default) {
// codes here
}

最佳答案

几个原因:

  1. ViewModel 可能是离 UI 最近的层,这意味着这里有很多逻辑都涉及到更新 UI => 在任何其他线程中启动将意味着你必须切换回 Main 来更新东西
  2. 使用任何其他调度程序意味着,知道 VM 中将发生哪种操作(例如 IO 操作或某些计算?)

总的来说,我认为这是一个很好的做法,不要在 VM 中处理线程切换并在层上处理,这基本上知道将运行哪种操作。例如,如果您有一个 VM -> Repository -> LocalSource(数据库操作)和 RemoteSource(网络),那么我会切换到远程和本地源中的 IO 线程。

关于android - viewModelScope 默认为 MainThread 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65210482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com