Ответ
Да, корутину внутри GlobalScope можно отменить, но управление её жизненным циклом становится сложнее, так как GlobalScope не привязан к какому-либо Job или CoroutineScope.
Для отмены нужно сохранить ссылку на Job корутины и вызвать job.cancel():
val job = GlobalScope.launch {
repeat(1000) { i ->
delay(500)
println("Working $i")
}
}
// Через 2 секунды отменяем
GlobalScope.launch {
delay(2000)
job.cancel()
}
Важно: GlobalScope не рекомендуется использовать в production-коде, так как это может привести к утечкам памяти. Вместо него лучше использовать CoroutineScope с привязкой к жизненному циклу (например, viewModelScope или lifecycleScope).