Ответ
В Kotlin есть несколько способов отмены корутины:
- Job.cancel() – явный вызов отмены:
val job = launch {
// работа корутины
}
job.cancel()
-
Автоматическая отмена при завершении родительской корутины (через иерархию Job).
-
withTimeout() – отмена по таймауту:
withTimeout(1000L) {
// корутина отменится через 1 сек
}
- Проверка isActive вручную:
launch {
while(isActive) {
// проверяем флаг активности
}
}
Важно: отмена корутины не прерывает её мгновенно – нужно обрабатывать CancellationException и освобождать ресурсы. Также можно использовать try-finally для cleanup-кода.