Sobes.tech
Junior — Middle

Em que lugar o estado é guardado ao alternar entre funções suspendidas em Kotlin?

sobes.tech IA

Resposta da IA

O estado ao passar entre funções suspend em Kotlin é guardado num estado de coroutine, que o compilador transforma numa máquina de estados. Este mecanismo interno armazena todas as variáveis locais e o ponto de retoma numa classe gerada.

Assim, ao suspender e retomar a coroutine, o controlo e os dados são restaurados a partir deste objeto, permitindo continuar a execução de onde foi interrompida.

Isto parece aproximadamente assim (de forma simplificada):

suspend fun exemplo() {
    val a = 1
    suspendFunction() // aqui a coroutine pode suspender-se
    println(a) // após retomar, o valor de a é preservado
}

O compilador cria uma classe que armazena a variável a e a posição no código para retomar a execução.