在android中的主线程之外的房间里写查询是强制性的吗?

Yog*_*kar 2 sqlite android android-room

我想将 Room 数据库集成到我的 android 应用程序 (JAVA) 中。
我浏览了互联网上关于 Room 数据库的许多内容,但没有一个能消除我的疑虑,它们是

  1. 是否必须从主线程中写出查询?
  2. 如果是,如果我们在主线程上编写查询会发生什么?

Man*_*ddy 5

  1. 是否必须从主线程中写出查询?

您可以通过初始化来允许查询在主线程上运行 .allowMainThreadQueries()

 Room.databaseBuilder(this, MyRoomDataBase::class.java, DATABASE_NAME).allowMainThreadQueries()
Run Code Online (Sandbox Code Playgroud)
  1. 如果是,如果我们在主线程上编写查询会发生什么?

如果您已指定,.allowMainThreadQueries()那么它将阻塞主线程,直到执行查询,否则它会抛出IllegalStateException并且您的应用程序将崩溃。最好不要在主线程上查询