Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Для чего нужен SupervisorJob? Как создать кастомный CoroutineScope?

Вопрос объясняет роль SupervisorJob и настройку областей видимости корутин.

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

  • SupervisorJob: ошибка в одной корутине не отменяет другие.

  • Кастомный CoroutineScope:

    val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)

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

1. SupervisorJob vs обычный Job

  • Обычный Job: ошибка в дочерней корутине отменяет все корутины в scope.

  • SupervisorJob: отменяется только упавшая корутина.

2. Создание кастомного scope

class MyViewModel : ViewModel() {
    private val customScope = CoroutineScope(
        SupervisorJob() + Dispatchers.Main + CoroutineExceptionHandler { _, e -> 
            println("Ошибка: $e") 
        }
    )

    override fun onCleared() {
        customScope.cancel() // Важно: отмена при уничтожении
    }
}
  • Аватар

    Android Guru

    Anton Gulyaev

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Kotlin

    Kotlin

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

#coroutines

#supervisor

#scope

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

  • Аватар

    Android Guru

    Anton Gulyaev

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