Sobes.tech
Junior — Middle

Как се извършва спирането и прилагането на корутините в асинхронните приложения?

sobes.tech AI

Отговор от AI

В Kotlin корутините се управляват чрез обекти Job и CoroutineScope. За пауза и спиране на корутините се използват следните механизми:

  • Пауза — корутините могат да бъдат поставени на пауза с ключовата дума suspend и функции, които сами спират изпълнението си (например, delay()). Това не блокира нишката, а корутината се възобновява по-късно.

  • Отмяна (спиране) — корутините могат да бъдат отменени, като се извика методът cancel() върху техния Job. При отмяна, корутината получава изключение CancellationException и трябва да приключи правилно.

Пример за отмяна на корутина:

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Работя $i ...")
        delay(500)
    }
}

// Спиране на корутината след 2 секунди
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Корутина отменена")
}

Така, паузата е естествена част от работата на корутините, а спирането е тяхната отменя чрез Job.