【发布时间】:2021-04-07 09:20:12
【问题描述】:
我收到此错误:无法访问主线程上的数据库,因为它可能会长时间锁定 UI。 当我在 ViewModel 中启动 fun turnAllWordsOn() 时会发生这种情况(代码如下)。这个函数启动协程,我认为协程总是在后台线程上工作。那么为什么我会收到这个错误? 感谢任何帮助
在片段中:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_turn_all_words_on -> {
viewModel.turnAllWordsOn()
true
}
// othes items
}
在 ViewModel 中:
fun turnAllWordsOn() = viewModelScope.launch {
wordDao.turnAllWordsOn()
}
在道:
@Query("UPDATE word_table SET shown = 1")
fun turnAllWordsOn()
【问题讨论】:
标签: android kotlin android-room kotlin-coroutines android-mvvm