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()lubjob.cancelAndJoin()pozwala zatrzymać wykonanie korutyny. - Strukturalna współbieżność:
Jobjest elementem hierarchii korutyn. Anulowanie nadrzędnegoJobpowoduje anulowanie wszystkich podrzędnychJob. - Oczekiwanie na zakończenie:
job.join()zmusza bieżącą korutynę do oczekiwania na zakończenie innej korutyny reprezentowanej przez tenJob. - Obsługa wyjątków: Nieobsłużone wyjątki w podrzędnej korutynie z
Jobrozprzestrzeniają się w hierarchiiJobi 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")
}
}