Какие знаешь проблемы в использовании GlobalScope

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

Ответ

Использование GlobalScope в Kotlin Coroutines может привести к нескольким проблемам:

  1. Утечки памяти – корутины в GlobalScope живут всё время работы приложения, даже если их родительский компонент (например, Activity) уничтожен.

  2. Отсутствие контроля жизненного цикла – нет возможности отменить все корутины при завершении работы компонента.

  3. Сложность тестирования – труднее управлять выполнением корутин в тестах.

Пример проблемы:

// Плохо: корутина продолжит работать после уничтожения Activity
GlobalScope.launch {
    fetchData() // Утечка!
}

// Лучше: использовать lifecycleScope в Activity
lifecycleScope.launch {
    fetchData() // Автоматически отменится при destroy
}

Всегда предпочитайте viewModelScope или lifecycleScope в Android-компонентах.