Appels suspend dans le ViewModel
Récupérez les données en dehors du thread principal.
Appels suspend dans le ViewModel est une leçon Jetpack Compose Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Jetpack Compose Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Jetpack Compose Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Never Block the Main Thread
Network calls take time, and doing them on the UI thread freezes your app. You move that work off the main thread instead.
Make the Endpoint suspend
Mark your Retrofit function with the suspend keyword. Now it returns the parsed result directly and can pause without blocking. ⏸️
@GET("users")
suspend fun getUsers(): List<User>The ViewModel Owns the Logic
Fetching data belongs in the ViewModel, not the Composable. It survives rotation and keeps your UI code purely about display.
class UserViewModel : ViewModel() {
// network logic lives here
}Launch With viewModelScope
A suspend function needs a coroutine. viewModelScope gives you one that is cancelled automatically when the ViewModel clears.
viewModelScope.launch {
val users = api.getUsers()
}Store the Result in State
Once the call returns, save the data into a state property so Compose can observe it and redraw the screen.
var users by mutableStateOf<List<User>>(emptyList())Wrap It In a try-catch
Networks fail, so guard the call with try-catch. An unhandled exception in a coroutine can crash your whole app.
try {
users = api.getUsers()
} catch (e: Exception) {
// handle failure
}Fetch on Init
Trigger the first load in the ViewModel's init block, so data starts arriving the moment the screen is created.
init {
loadUsers()
}Keep It in a Function
Wrap the fetch in a named function like loadUsers. That makes it easy to call again for retry or pull-to-refresh.
fun loadUsers() = viewModelScope.launch {
users = api.getUsers()
}Dispatchers Handle Threading
Retrofit already runs the request on a background dispatcher, so you usually don't switch threads with Dispatchers.IO yourself.
Collect State in Compose
In your Composable, read the ViewModel's state. Because it's observable, Compose recomposes the instant fresh data lands.
val users = viewModel.usersCancellation Is Automatic
If the user leaves and the ViewModel clears, viewModelScope cancels the in-flight call, so you waste no work on a dead screen.
Quick Check
Which scope cancels its coroutines automatically when the ViewModel is cleared?
Recap: Calling From the ViewModel
You made endpoints suspend, launched them in viewModelScope, stored results in state, and caught errors. Next you'll render loading, success, and error states.
Questions Fréquemment Posées
La leçon « Appels suspend dans le ViewModel » est-elle gratuite ?
Oui — le texte complet de « Appels suspend dans le ViewModel » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Jetpack Compose Academy, passe à CoddyKit PRO. Le cours Jetpack Compose Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Appels suspend dans le ViewModel » ?
Récupérez les données en dehors du thread principal. Tu pratiques Jetpack Compose Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Jetpack Compose Academy ?
Aucune expérience préalable n'est requise. Jetpack Compose Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Appels suspend dans le ViewModel » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Jetpack Compose Academy ?
Oui. Chaque leçon Jetpack Compose Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Définir une interface d’API Retrofit
- Analyser du JSON avec Moshi
- Appels suspend dans le ViewModel
- Interface de chargement, de réussite et d’erreur