Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Android: cancel

Как правильно отменять корутины и какие инструменты для этого есть?

Вопрос проверяет знание механизмов отмены корутин и лучших практик.

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

Для отмены корутин используйте:

  1. job.cancel() — явная отмена.

  2. CoroutineScope.cancel() — отмена всех корутин в скоупе.

  3. Проверку isActive внутри корутины для graceful shutdown.

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

1. Способы отмены:

  • Явная отмена через Job:

    val job = launch { ... }  
    job.cancel()  
  • Отмена всего скоупа:

    val scope = CoroutineScope(Job())  
    scope.cancel() // Отменяет все корутины внутри  

2. Graceful-отмена:

  • Проверка isActive в долгих операциях:

    launch {  
        while (isActive) {  
            // Делаем работу  
        }  
    }  
  • Использование yield() для проверки отмены в CPU-intensive задачах.

3. Обработка отмены:

  • Блок try {...} finally {...} для освобождения ресурсов:

    launch {  
        try {  
            delay(1000)  
        } finally {  
            println("Корутина отменена, но ресурсы очищены")  
        }  
    }  
  • Аватар

    Android Guru

    Anton Gulyaev

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Android

    Android

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

#cancel

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

  • Аватар

    Android Guru

    Anton Gulyaev

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