Sobes.tech
Junior — Middle

In welk deel van de uitvoering van coroutines zal een oneindige lus plaatsvinden, als die er is?

sobes.tech AI

Antwoord van AI

Als er binnen een coroutine in Android (bijvoorbeeld met Kotlin Coroutines) een oneindige lus is, wordt deze lus uitgevoerd op het moment dat de coroutine zelf wordt aangeroepen, dat wil zeggen bij de eerste uitvoering, of dat nu door resume of door het starten via launch of async gebeurt.

Je kunt een coroutine zien als een functie die gepauzeerd en hervat kan worden. Als er in de coroutine een oneindige lus is zonder pauzepunten (suspend functies), zal de coroutine de thread waarop hij wordt uitgevoerd blokkeren en deze lus oneindig blijven uitvoeren.

Om blokkering te voorkomen, bevatten oneindige lussen in coroutines meestal oproepen naar suspend functies, zoals delay(), die de coroutine toestaan te pauzeren en de thread vrij te maken.

Voorbeeld van een oneindige lus met pauze:

launch {
    while (true) {
        // wat werk
        delay(1000) // pauzeer de coroutine voor 1 seconde
    }
}

Als delay of andere suspend oproepen ontbreken, wordt de lus onmiddellijk bij het starten van de coroutine oneindig uitgevoerd en blokkeert de thread.