Какой опыт работы со Scope

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

Ответ

Работал с различными скоупами в Kotlin: GlobalScope, lifecycleScope, viewModelScope, кастомные скоупы через CoroutineScope().

Основные моменты:

  • Для UI-логики использую lifecycleScope (в Activity/Fragment) и viewModelScope (в ViewModel)
  • Избегаю GlobalScope из-за риска утечек памяти
  • Кастомные скоупы с SupervisorJob() для независимых задач

Пример:

// ViewModel с viewModelScope
viewModelScope.launch {
    val data = repository.fetchData() 
    _uiState.value = DataLoaded(data)
}

// Кастомный скоуп
val customScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
customScope.launch {
    // тяжелые операции
}

Всегда отменяю скоупы в onCleared()/onDestroy() для предотвращения утечек.