Что такое GlobalScope

«Что такое GlobalScope» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

GlobalScope — это CoroutineScope, который существует на протяжении всего времени работы приложения. Он не привязан к жизненному циклу компонентов (Activity, Fragment и т.д.), поэтому корутины, запущенные в нём, могут пережить их уничтожение, что может привести к утечкам памяти.

Когда использовать:

  • Для задач, которые должны выполняться всё время работы приложения (например, логирование, мониторинг сети).
  • В крайних случаях, когда нет доступа к другим скоупам.

Пример:

GlobalScope.launch {
    // Долгая операция (например, запрос в сеть)
    delay(1000)
    println("Выполнено в GlobalScope")
}

Проблемы:

  • Нет контроля отмены (корутина живёт, пока не завершится).
  • Риск утечек памяти, если корутина ссылается на уничтоженные объекты.

Лучшая альтернатива: Использовать viewModelScope (в ViewModel) или lifecycleScope (в Activity/Fragment).