Avatar ·

Erreur MutableLiveData setValue dans un thread d'arrière-plan depuis une coroutine : comment corriger ?

Bonjour ! J'ai récemment commencé à apprendre Kotlin et le développement Android, et j'ai rencontré un problème en utilisant MutableLiveData avec des coroutines. J'ai un ViewModel qui charge des données depuis le réseau à l'aide d'une coroutine. Lorsque les données arrivent, j'essaie de mettre à jour LiveData, mais j'obtiens un crash avec l'erreur : ``` Cannot invoke setValue on a background thread ``` Voici mon code : ```kotlin class MyViewModel : ViewModel() { private val _data = MutableLiveData>() val data: LiveData> = _data fun loadData() { viewModelScope.launch { val result = fetchDataFromApi() // suspend function _data.setValue(result) // ça plante ici } } private suspend fun fetchDataFromApi(): List { delay(2000) // simulation de chargement return listOf("item1", "item2", "item3") } } ``` J'ai lu que MutableLiveData.setValue() ne peut être appelé que depuis le thread principal. Mais la coroutine est lancée via