0Pricing
Jetpack Compose Academy · Lezione

DisposableEffect e pulizia

Registri e rilasci le risorse in sicurezza.

DisposableEffect e pulizia è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Jetpack Compose Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Jetpack Compose Academy include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

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. 🧹

Domande Frequenti

La lezione «DisposableEffect e pulizia» è gratuita?

Sì — il testo completo di «DisposableEffect e pulizia» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Jetpack Compose Academy, passa a CoddyKit PRO. Il corso Jetpack Compose Academy include 4 lezioni in totale.

Cosa imparerò in «DisposableEffect e pulizia»?

Registri e rilasci le risorse in sicurezza. Eserciti Jetpack Compose Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Jetpack Compose Academy?

Non è richiesta alcuna esperienza precedente. Jetpack Compose Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «DisposableEffect e pulizia»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Jetpack Compose Academy?

Sì. Ogni lezione Jetpack Compose Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. LaunchedEffect per le coroutine
  2. rememberCoroutineScope per gli eventi
  3. DisposableEffect e pulizia
  4. derivedStateOf e snapshotFlow
← Torna a Jetpack Compose Academy