相关疑难解决方法(0)

如何在主线程上使用协同程序GlobalScope?

我试图在0.30.0中使用最新的协同程序,并且无法弄清楚如何使用新的作用域.在原始的协同程序中,我可以使用UI或CommonPool设置上下文,一切正常.

现在我正在尝试在从房间数据库中读取时在我的ViewModel中使用GlobalScope,然后我想将返回的值赋给我的LiveData对象.

我尝试设置LiveData值时收到以下错误

java.lang.IllegalStateException:无法在后台线程上调用setValue

fun getContact() {
        GlobalScope.launch {
            val contact = contacts.getContact() // suspended function
            withContext(Dispatchers.Default) { phoneContact.value = contact }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我只看到调度员的默认,无限和IO,而且没有一个工作,我无法弄清楚我做错了什么?我对主线程的选择在哪里?

android kotlin kotlin-coroutines

6
推荐指数
2
解决办法
6926
查看次数

标签 统计

android ×1

kotlin ×1

kotlin-coroutines ×1