0Pricing
Jetpack Compose Academy · Leçon

DisposableEffect et nettoyage

Enregistrez et libérez les ressources en toute sécurité.

DisposableEffect et nettoyage 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.

When You Must Clean Up

Some setup needs a matching teardown: registering a listener, opening a sensor, or observing the lifecycle. For that you use DisposableEffect.

Setup Plus onDispose

A DisposableEffect runs setup code and must end with an onDispose block. That block runs when the effect leaves or its key changes. 🧹

DisposableEffect(Unit) {
    sensor.start()
    onDispose { sensor.stop() }
}

The onDispose Is Required

Every DisposableEffect must return onDispose as its last statement. The compiler enforces this so you never forget to release resources.

Keys Work Like Before

Just like LaunchedEffect, a changed key tears down the old effect (running onDispose) and sets up a fresh one with the new value.

DisposableEffect(roomId) {
    chat.join(roomId)
    onDispose { chat.leave(roomId) }
}

Register and Unregister

The classic use is a callback or broadcast receiver: register it during setup and unregister it inside onDispose to avoid leaks.

DisposableEffect(Unit) {
    val cb = Listener()
    api.add(cb)
    onDispose { api.remove(cb) }
}

Observe the Lifecycle

You can add a LifecycleObserver on setup and remove it on dispose, which keeps lifecycle logic local to one Composable.

DisposableEffect(lifecycleOwner) {
    lifecycle.addObserver(obs)
    onDispose { lifecycle.removeObserver(obs) }
}

Why Not LaunchedEffect

LaunchedEffect cancels its coroutine but cannot run arbitrary cleanup. When you need a symmetric undo step, DisposableEffect is the tool.

No Suspend Functions Inside

A DisposableEffect block is not a coroutine, so you cannot call suspend functions directly here. Use it for plain setup and teardown.

Cleanup Runs Before Restart

If the key changes, onDispose runs before the new setup. Old resources are released first, so you never double-register.

Leaving the Screen Cleans Up

When the Composable leaves composition for good, onDispose fires one final time. That guarantee is what prevents resource leaks.

A Sensor Subscription Example

Start listening in setup, store the handle, and stop in onDispose. The effect mirrors the resource lifetime to the Composable.

DisposableEffect(Unit) {
    val sub = location.subscribe()
    onDispose { sub.cancel() }
}

Quick Check

Focus on what makes DisposableEffect unique.

Recap: DisposableEffect

Well done! DisposableEffect pairs setup with a required onDispose. It runs cleanup when the key changes or the Composable leaves, keeping resources leak-free. 🧹

Questions Fréquemment Posées

La leçon « DisposableEffect et nettoyage » est-elle gratuite ?

Oui — le texte complet de « DisposableEffect et nettoyage » 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 « DisposableEffect et nettoyage » ?

Enregistrez et libérez les ressources en toute sécurité. 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 « DisposableEffect et nettoyage » ?

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

  1. LaunchedEffect pour les coroutines
  2. rememberCoroutineScope pour les événements
  3. DisposableEffect et nettoyage
  4. derivedStateOf et snapshotFlow
← Retour à Jetpack Compose Academy