Android Room 在 Kotlin 中的 "Cannot access database on the main thread" 错误
你好!我是 Kotlin Android 开发的新手,使用 Room 进行本地数据存储。我写了一个简单的 SELECT 查询,但应用崩溃并报错:"Cannot access database on the main thread"。这是我的代码:
```kotlin
// DAO
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE id = :userId")
fun getUser(userId: Int): User
}
// Activity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java,
"my-db"
).build()
val user = db.userDao().getUser(1) // 这里出错!
textView.text = user.name
}
}
```
我理解 Room 禁止在主线程上操作数据库,但如何正确获取数据?我尝试过使用 async/await,但没