Avatar ·

Android Room : comment corriger l'erreur "Cannot access database on the main thread" lors d'une simple requête SELECT ?

Bonjour à tous ! Je suis débutant en développement Android avec Kotlin et j'utilise Room pour une base de données locale. J'ai une entité User simple et un DAO avec une méthode getAllUsers() qui retourne une liste de tous les utilisateurs. J'appelle cette méthode depuis une Activity pour afficher les données dans un RecyclerView. Mais l'application plante avec l'erreur :

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.

Voici mon code :

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