Android Room: cómo corregir el error "Cannot access database on the main thread" en una consulta SELECT simple
¡Hola a todos! Soy nuevo en el desarrollo de Android con Kotlin y estoy usando Room para la base de datos local. Tengo una entidad User simple y un DAO con el método getAllUsers(), que devuelve una lista de todos los usuarios. Llamo a este método desde una Activity para mostrar los datos en un RecyclerView. Pero la aplicación se cierra con el error:
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Aquí está mi código:
// 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() {