Sobes.tech
Middle

Mis on suspend-funktsioon Kotlinis?

sobes.tech AI

Vastus AI-lt

Suspend-funktsioon on Kotlinis funktsioon, mida saab "peatada" (suspend) ja hiljem "taas alustada" (resume). Seda kasutatakse asünkroonse, mitte-blokeeriva koodi kirjutamiseks imperatiivses stiilis, mis lihtsustab pikaajaliste operatsioonide, nagu võrgupäringud või andmebaasi operatsioonid, haldamist.

Peamised suspend-funktsioonide omadused:

  • Muudatus suspend: Deklareeritakse võtmesõnaga suspend funktsiooni nime ees.
  • Töö korutüünidega: Neid kutsutakse välja ainult teistest suspend-funktsioonidest või korutüünide ehitajatest (näiteks launch, async).
  • Mitte-blokeeriv olemus: Suspend-funktsiooni peatamine ei blokeeri selle täitmisel olevat niiti. Selle asemel vabastab niidi teiste ülesannete täitmiseks ning kui asünkroonse operatsiooni tulemus on valmis, jätkub funktsiooni täitmine peatamise kohast.
  • Selge märgistus: Muutja suspend näitab selgelt, et selle funktsiooni väljakutse võib olla pikaajaline operatsioon ning seda ei tohiks otse teha peamise niidiga (UI-niidiga).

Näide:

// Tavaline funktsioon
fun fetchDataBlocking(): String {
    // Blokeeriv võrgupäring, võib jääda seisma
    Thread.sleep(2000)
    return "Andmed on saadud"
}

// Suspend-funktsioon
suspend fun fetchDataNonBlocking(): String {
    // Asünkroonne võrgupäring
    // Korutüün peatub siin, niit ei blokeeru
    delay(2000) // Näide suspend-funktsioonist, mis simuleerib viivitust
    return "Andmed saadud asünkroonselt"
}

Suspend-funktsioonid on aluseks kergesti loetava ja hooldatava asünkroonse koodi koostamisel korutüünide abil.