Sobes.tech
Middle

Ce este o funcție suspend în Kotlin?

sobes.tech AI

Răspuns de la AI

Funcția suspend — este o funcție în Kotlin care poate fi "oprită" (suspend) și ulterior "reluată" (resume). Este utilizată pentru a scrie cod asincron și non-blocant în stil imperativ, ceea ce simplifică lucrul cu operațiuni pe termen lung, cum ar fi solicitările de rețea sau operațiunile cu baza de date.

Caracteristici cheie ale funcțiilor suspend:

  • Modificatorul suspend: Se declară cu cuvântul cheie suspend înaintea numelui funcției.
  • Lucru cu corutine: Sunt apelate doar din alte funcții suspend sau din constructorii de corutine (de exemplu, launch, async).
  • Natură non-blocantă: Suspendarea unei funcții suspend nu blochează firul pe care se execută. În schimb, firul este eliberat pentru a efectua alte sarcini, iar când rezultatul operației asincrone este gata, execuția funcției se reia de la punctul de suspendare.
  • Marcaj explicit: Modificatorul suspend indică clar că apelul acestei funcții poate fi o operație lungă și nu trebuie executată direct pe firul principal (fir UI).

Exemplu:

// Funcție normală
fun fetchDataBlocking(): String {
    // Apel de rețea blocant, poate să se blocheze
    Thread.sleep(2000)
    return "Date primite"
}

// Funcție suspend
suspend fun fetchDataNonBlocking(): String {
    // Apel de rețea asincron
    // Corutina se suspendă aici, firul nu se blochează
    delay(2000) // Exemplu de funcție suspend care simulează o întârziere
    return "Date primite asincron"
}

Funcțiile suspend sunt fundamentul pentru construirea unui cod asincron ușor de citit și întreținut, utilizând corutine.