Sobes.tech
Middle

Do czego służy obiekt Job w Androidzie?

sobes.tech AI

Odpowiedź od AI

Job w Kotlin Coroutines jest używany do zarządzania cyklem życia i anulowania korutyn.

Główne zastosowania:

  • Zarządzanie cyklem życia: Pozwala śledzić stan korutyny (Active, Completing, Completed, Cancelling, Cancelled, New).
  • Anulowanie korutyny: Wywołanie job.cancel() lub job.cancelAndJoin() pozwala zatrzymać wykonanie korutyny.
  • Strukturalna współbieżność: Job jest elementem hierarchii korutyn. Anulowanie nadrzędnego Job powoduje anulowanie wszystkich podrzędnych Job.
  • Oczekiwanie na zakończenie: job.join() zmusza bieżącą korutynę do oczekiwania na zakończenie innej korutyny reprezentowanej przez ten Job.
  • Obsługa wyjątków: Nieobsłużone wyjątki w podrzędnej korutynie z Job rozprzestrzeniają się w hierarchii Job i mogą być przechwycone przez specjalne obsługiwacze (np. CoroutineExceptionHandler).

Przykład użycia do uruchomienia i anulowania:

fun startAndCancelCoroutine() {
    // Scope korutyn można uzyskać z ViewModel, Activity, Fragment itp.
    val scope = CoroutineScope(Dispatchers.IO)

    val job: Job = scope.launch {
        // Długie obliczenia
        delay(5000)
        println("Korutyna zakończona")
    }

    // Anuluj korutynę po 2 sekundach
    scope.launch {
        delay(2000)
        job.cancel()
        println("Korutyna anulowana")
    }
}