将 Android Room 与 Kotlin 协程一起使用的正确方法是什么?

Kaz*_*hen 5 android kotlin android-room kotlin-coroutines

最近在学习如何使用Kotlin Coroutines的同时,看了几篇相关的文章。但其中之一让我感到困惑:Android 上的协程(第三部分):真正的工作

正如它指出的那样:

注意:Room 使用自己的调度程序在后台线程上运行查询。您的代码不应使用 withContext(Dispatchers.IO) 来调用暂停房间查询。它会使代码复杂化并使您的查询运行得更慢。

在我看到这些段落的时候似乎有道理,但是当我打开一个 Android 项目并尝试深入研究时,问题出现了,Android Studio 警告我:

挂起函数“yourMethod”只能从协程或其他挂起函数调用

我现在在这里冻结,因为文章告诉我不要使用withContext(Dispatchers.IO). 我现在想知道我应该使用withContext(Dispatchers.Main)还是使用GlobalScope.launch来运行我的查询?

小智 0

您应该在存储库中使用 Dispatchers.IO,在 viewModel 中您可以使用 viewModelScope。