Sobes.tech
Middle

Para que é que serve o objeto Job no Android?

sobes.tech IA

Resposta da IA

Job em Kotlin Coroutines é utilizado para gerir o ciclo de vida e cancelar as corutinas.

Principais aplicações:

  • Gestão do ciclo de vida: Permite acompanhar o estado da corutina (Active, Completing, Completed, Cancelling, Cancelled, New).
  • Cancelar a corutina: A chamada a job.cancel() ou job.cancelAndJoin() permite parar a execução da corutina.
  • Concorrência estruturada: Job é um elemento da hierarquia de corutinas. O cancelamento do Job pai leva ao cancelamento de todos os Job filhos.
  • Aguardar a conclusão: job.join() faz com que a corutina atual espere pela conclusão de outra corutina representada por este Job.
  • Tratamento de exceções: Exceções não tratadas numa corutina filha com Job propagam-se para cima na hierarquia de Job e podem ser capturadas por manipuladores especiais (por exemplo, CoroutineExceptionHandler).

Exemplo de uso para iniciar e cancelar:

fun startAndCancelCoroutine() {
    // Pode obter um CoroutineScope de ViewModel, Activity, Fragment, etc.
    val scope = CoroutineScope(Dispatchers.IO)

    val job: Job = scope.launch {
        // Cálculos longos
        delay(5000)
        println("Corutina terminada")
    }

    // Cancelar a corutina após 2 segundos
    scope.launch {
        delay(2000)
        job.cancel()
        println("Corutina cancelada")
    }
}