Avatar ·

来自协程后台线程的 MutableLiveData setValue 错误:如何修复?

你好!我最近刚开始学习 Kotlin 和 Android 开发,在使用 MutableLiveData 配合协程时遇到了一个问题。 我有一个 ViewModel,它使用协程从网络加载数据。当数据到达时,我尝试更新 LiveData,但遇到了崩溃,错误信息如下: ``` Cannot invoke setValue on a background thread ``` 这是我的代码: ```kotlin class MyViewModel : ViewModel() { private val _data = MutableLiveData>() val data: LiveData> = _data fun loadData() { viewModelScope.launch { val result = fetchDataFromApi() // suspend 函数 _data.setValue(result) // 这里崩溃 } } private suspend fun fetchDataFromApi(): List { delay(2000) // 模拟加载 return listOf("item1", "item2", "item3") } } ``` 我了解到 MutableLiveData.setValue() 只能在主线程中调用。但协程是通过