Android Room:如何修复简单SELECT查询时的“无法在主线程访问数据库”错误?
大家好!我是Kotlin Android开发的新手,正在使用Room进行本地数据库操作。我有一个简单的User实体和DAO,其中包含getAllUsers()方法,返回所有用户列表。我在Activity中调用此方法来在RecyclerView中显示数据。但应用崩溃并报错:
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
以下是我的代码:
// Entity
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val email: String
)
// DAO
@Dao
interface UserDao {
@Query("SELECT * FROM users")
suspend fun getAllUsers(): List<User>
}
// Database
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
// Activity
class MainActivity : AppCompatActivity() {