Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Kotlin: coroutine, scope, dispatcher, lifecycle, cancellation

Какие есть CoroutineScope и Dispatcher, и как они применяются?

Проверяет знание контекстов и диспетчеров для управления исполнением корутин.

Короткий ответ

CoroutineScope определяет жизненный цикл корутин, например GlobalScope, viewModelScope, lifecycleScope, а Dispatcher указывает, на каком потоке выполнять код: Dispatchers.Main для UI, Dispatchers.IO для I/O, Dispatchers.Default для CPU-интенсивных задач. Их комбинируют, чтобы корутины запускались в нужных условиях и отменялись вместе с жизненным циклом.

Длинный ответ

1. CoroutineScope

  • GlobalScope — живёт до завершения JVM

  • viewModelScope — отменяется при уничтожении ViewModel

  • lifecycleScope — привязан к lifecycle Activity/Fragment

2. Dispatcher

  • Dispatchers.Main — главный (UI) поток

  • Dispatchers.IO — пул потоков для I/O операций

  • Dispatchers.Default — пул для CPU-нагрузки

  • newSingleThreadContext("MyThread") — собственный поток

3. Пример запуска:

viewModelScope.launch(Dispatchers.IO) {
  	val data = repository.load()
  	withContext(Dispatchers.Main) {
    		updateUi(data)
  	}
}

4. Вывод:

  • Scope контролирует отмену

  • Dispatcher — выбор потока для работы

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#coroutine

#scope

#dispatcher

#lifecycle

#cancellation

Подпишись на Android Developer в телеграм