Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: launch, async, scope, dispatcher, runblocking

Какими способами можно запустить корутину в Kotlin?

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

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

Корутины запускаются через launch или async внутри CoroutineScope:

  • GlobalScope.launch {} — в глобальном скоупе (не рекомендуют).

  • lifecycleScope.launch {} и viewModelScope.launch {} в Android.

  • runBlocking {} для блокирующих тестов.

Каждый метод позволяет задать Dispatcher (Main, IO, Default) для выполнения на нужном потоке.

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

launch vs async:

  • launch возвращает Job и не возвращает результат.

  • async возвращает Deferred<T>, результат из await().

 Scopes:

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

  • CoroutineScope на уровне классов:

  • viewModelScope (от AndroidX)

  • lifecycleScope (Activity/Fragment)

  • runBlocking — создаёт блокирующую корутину для main/тестов.

Dispatcher:

  • Dispatchers.Main — UI-поток.

  • Dispatchers.IO — для I/O.

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

Пример:

viewModelScope.launch(Dispatchers.IO) {
  	val data = repository.load()
  	withContext(Dispatchers.Main) {
    		updateUi(data)
  	}
}
  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

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

#launch

#async

#scope

#dispatcher

#runblocking

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

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.