Проверьте, не подавляет ли общий catch сигнал отмены
Зачем
Зачем это нужно
Свяжите время жизни Job с владельцем выполняемой задачи
Разделите ошибки дочерней корутины и нормальную отмену работы
Вопросы
Частые вопросы
Как попросить разобрать отмену корутины Kotlin?
Разбери Kotlin с kotlinx.coroutines: suspend fun work(){try{delay(1000)}catch(e:Exception){println("ошибка")}}. Объясни, почему обработчик перехватывает отмену. Покажи вариант с передачей CancellationException дальше и предложи тест отмены Job до завершения delay. Отдели общие корутины от Android lifecycle, не добавляй Android API без запроса и не выполняй код.
Что указать о scope перед разбором корутин?
Передайте версии Kotlin и kotlinx.coroutines, место создания scope и код запуска. Для Android укажите владельца жизненного цикла отдельно. Удалите секреты из логов. Сначала разберите родителя и дочернюю задачу, затем способ обработки отказа.
Что проверить при отмене во время delay?
В локальном тесте запустите Job, отмените его до завершения задержки и дождитесь окончания. Проверьте отсутствие общего сообщения «ошибка» при отмене и сообщений об успешном выполнении после delay. Отдельно проверьте передачу CancellationException на границе вызывающего suspend-кода: один только признак Job.isCancelled не доказывает, что исключение было передано дальше. Если используется виртуальное время тестовой библиотеки, явно укажите это в тесте.
Останавливает ли cancel любой вычислительный цикл?
Отмена корутин кооперативная. Длительный цикл без точек приостановки или проверок активности может продолжать работу. Модель должна учитывать тело задачи; замена scope сама по себе не добавляет проверки отмены.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.