Ответ
Использование GlobalScope в Kotlin Coroutines может привести к нескольким проблемам:
-
Утечки памяти – корутины в
GlobalScopeживут всё время работы приложения, даже если их родительский компонент (например, Activity) уничтожен. -
Отсутствие контроля жизненного цикла – нет возможности отменить все корутины при завершении работы компонента.
-
Сложность тестирования – труднее управлять выполнением корутин в тестах.
Пример проблемы:
// Плохо: корутина продолжит работать после уничтожения Activity
GlobalScope.launch {
fetchData() // Утечка!
}
// Лучше: использовать lifecycleScope в Activity
lifecycleScope.launch {
fetchData() // Автоматически отменится при destroy
}
Всегда предпочитайте viewModelScope или lifecycleScope в Android-компонентах.