Для чего нужен CoroutineScope

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

Ответ

CoroutineScope определяет контекст выполнения корутин (Job, Dispatcher). Он управляет жизненным циклом корутин, позволяя их отменять и контролировать утечки памяти.

Пример:

class MyViewModel : ViewModel() {
    private val scope = viewModelScope // встроенный scope в ViewModel

    fun fetchData() {
        scope.launch {
            val data = repository.loadData() // suspend-функция
            updateUi(data)
        }
    }
}

Ключевые моменты:

  • Scope автоматически отменяет все дочерние корутины при завершении (например, при очистке ViewModel)
  • Позволяет задавать Dispatcher по умолчанию (Main/IO/Default)
  • Предотвращает утечки через structured concurrency (дочерние корутины наследуют контекст)