tgoop.com/kotlin_lib/625
Create:
Last Update:
Last Update:
Разница между job.cancel() и scope.cancel() в Kotlin Coroutines
В Kotlin-корутинах часто путают отмену конкретного Job
и всей области видимости (Scope
). Разберёмся.
Что такое Job и Scope?
- Job
- отдельная корутина, возвращается при launch
или async
.
- CoroutineScope
- контейнер для корутин. В нём есть общий Job
, управляющий жизненным циклом всех корутин внутри.job.cancel()
Отменяет только одну корутину.
val scope = CoroutineScope(Dispatchers.Default)
val jobA = scope.launch { delay(5000) }
val jobB = scope.launch { delay(10000) }
jobA.cancel() // Отменится только jobA, jobB продолжит работу
Scope остаётся активным и можно запускать новые задачи.
scope.cancel()
Отменяет все корутины в области видимости и сам scope.
scope.cancel() // Все корутины в scope будут остановлены
После этого новые корутины запустить уже нельзя.
https://medium.com/proandroiddev/kotlin-coroutines-the-real-difference-between-job-cancel-and-scope-cancel-05e1d9dd5245
✍️ @kotlin_lib
BY Kotlin

Share with your friend now:
tgoop.com/kotlin_lib/625