Avatar ·

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() {