DisposableEffect und Aufräumen
Registrieren und geben Sie Ressourcen sicher frei.
DisposableEffect und Aufräumen ist eine kostenlose Jetpack Compose Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Jetpack Compose Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Jetpack Compose Academy-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
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. 🧹
Häufig gestellte Fragen
Ist die Lektion „DisposableEffect und Aufräumen“ kostenlos?
Ja — der vollständige Text von „DisposableEffect und Aufräumen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Jetpack Compose Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Jetpack Compose Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „DisposableEffect und Aufräumen“?
Registrieren und geben Sie Ressourcen sicher frei. Du übst Jetpack Compose Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Jetpack Compose Academy zu starten?
Keine Vorkenntnisse erforderlich. Jetpack Compose Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „DisposableEffect und Aufräumen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Jetpack Compose Academy-Lektion Code schreiben und ausführen?
Ja. Jede Jetpack Compose Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- LaunchedEffect für Coroutines
- rememberCoroutineScope für Ereignisse
- DisposableEffect und Aufräumen
- derivedStateOf und snapshotFlow