Этот вопрос проверяет понимание проблем, связанных с использованием GlobalScope в корутинах.
GlobalScope не привязан к жизненному циклу приложения, что может привести к утечкам памяти и неожиданному поведению. Вместо него рекомендуется использовать CoroutineScope с явным управлением (например, viewModelScope или lifecycleScope).
1. Проблемы GlobalScope:
Утечки памяти: Корутины в GlobalScope живут всё время работы приложения, даже если их родительский компонент (например, Activity) уничтожен.
Отсутствие отмены: Нет автоматической отмены при завершении контекста (например, закрытии экрана).
Сложность тестирования: Невозможно легко контролировать выполнение корутин в тестах.
2. Альтернативы:
viewModelScope (в Android) — автоматически отменяется при очистке ViewModel.
lifecycleScope — привязан к жизненному циклу компонента (например, Fragment).
Ручное создание CoroutineScope с Job() для явного управления.
Пример неправильного использования:
GlobalScope.launch {
// Корутина продолжит работать, даже если экран закрыт
fetchData()
} Пример правильного использования:
viewModelScope.launch {
// Корутина отменится при очистке ViewModel
fetchData()
} Вывод:GlobalScope подходит только для глобальных задач (например, логирования), но не для привязки к UI или бизнес-логике.