Ответ
Нет, корутина не может продолжить работу после отмены скоупа, если она корректно обрабатывает отмену. При отмене скоупа все дочерние корутины также отменяются. Однако, если корутина игнорирует isActive или не проверяет ensureActive(), она может продолжать выполнение до завершения своей работы.
scope.launch {
try {
while (true) {
delay(1000)
println("Still running") // Будет работать, пока не проверит isActive
}
} finally {
println("Cancelled") // Выполнится при отмене
}
}
scope.cancel() // Прервёт корутину
Для корректной отмены используйте ensureActive() или проверяйте isActive.