Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: parent, cancellation, supervisor, scope

Что происходит с дочерними корутинами при отмене родительской и как этого избежать?

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

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

По умолчанию корутины иерархичны: при отмене родительского Job автоматически отменяются все дочерние. Чтобы дочерняя корутина продолжила работу независимо, её надо запускать в новом CoroutineScope или использовать supervisorScope/SupervisorJob, который не распространяет отмену на сверстников.

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

1. Иерархия по умолчанию

  • launch внутри launch → дочерняя корутина наследует отмену

2. SupervisorJob

  • CoroutineScope(SupervisorJob())

  • Ошибка в одном child не отменяет других

3. supervisorScope

supervisorScope {
  	launch { /* child1 */ }
  	launch { /* child2 */ }
}

4. Новый Scope

  • GlobalScope.launch { … } или собственный CoroutineScope

Когда использовать:

Для параллельных задач, где ошибка одной не должна убить все

  • Аватар

    Android Guru

    Anton Gulyaev

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

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

#parent

#cancellation

#supervisor

#scope

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

  • Аватар

    Android Guru

    Anton Gulyaev

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