DisposableEffect e Limpeza
Registre e libere recursos com segurança.
DisposableEffect e Limpeza é uma aula grátis de Jetpack Compose Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Jetpack Compose Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Jetpack Compose Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
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. 🧹
Perguntas Frequentes
A aula “DisposableEffect e Limpeza” é grátis?
Sim — o texto completo de “DisposableEffect e Limpeza” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Jetpack Compose Academy, atualize para CoddyKit PRO. O curso de Jetpack Compose Academy inclui 4 aulas no total.
O que vou aprender em “DisposableEffect e Limpeza”?
Registre e libere recursos com segurança. Você pratica Jetpack Compose Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Jetpack Compose Academy?
Nenhuma experiência prévia é necessária. Jetpack Compose Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “DisposableEffect e Limpeza”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Jetpack Compose Academy?
Sim. Cada aula de Jetpack Compose Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- LaunchedEffect para Corrotinas
- rememberCoroutineScope para Eventos
- DisposableEffect e Limpeza
- derivedStateOf e snapshotFlow