Зачем нужен Scope

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

Ответ

Scopes в Kotlin (CoroutineScope, ViewModelScope, LifecycleScope) помогают управлять жизненным циклом корутин, автоматически отменяя их при завершении связанного контекста (например, уничтожение Activity/ViewModel). Это предотвращает утечки памяти и ненужную работу.

Пример с ViewModelScope:

class MyViewModel : ViewModel() {
    fun fetchData() {
        viewModelScope.launch {
            val data = repository.loadData() // корутина отменится при clear() ViewModel
            updateUi(data)
        }
    }
}

Преимущества:

  • Автоматическая отмена корутин
  • Чистая архитектура (не нужно вручную управлять Job)
  • Интеграция с Android lifecycle