Ответ
DisposableEffect — это композейбл в Jetpack Compose, который выполняет side-эффекты и предоставляет механизм для их очистки. Он аналогичен useEffect в React, но с явным указанием ключей и cleanup-логики.
@Composable
fun TimerDisplay() {
var time by remember { mutableStateOf(0) }
DisposableEffect(Unit) {
val timer = Timer()
timer.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
time++
}
}, 0, 1000)
onDispose {
timer.cancel() // Очистка при выходе из композиции
}
}
Text(text = "Time: $time")
}
Ключевые особенности:
- Запускает эффект при входе в композицию
- Выполняет cleanup в
onDisposeпри выходе или изменении ключей - Перезапускает эффект при изменении переданных ключей (аналог зависимостей в useEffect)