Ответ
GlobalScope — это CoroutineScope, который существует на протяжении всего времени работы приложения. Он не привязан к жизненному циклу компонентов (Activity, Fragment и т.д.), поэтому корутины, запущенные в нём, могут пережить их уничтожение, что может привести к утечкам памяти.
Когда использовать:
- Для задач, которые должны выполняться всё время работы приложения (например, логирование, мониторинг сети).
- В крайних случаях, когда нет доступа к другим скоупам.
Пример:
GlobalScope.launch {
// Долгая операция (например, запрос в сеть)
delay(1000)
println("Выполнено в GlobalScope")
}
Проблемы:
- Нет контроля отмены (корутина живёт, пока не завершится).
- Риск утечек памяти, если корутина ссылается на уничтоженные объекты.
Лучшая альтернатива: Использовать viewModelScope (в ViewModel) или lifecycleScope (в Activity/Fragment).