Sobes.tech
Middle

Ce este funcția 'suspend' în Kotlin?

sobes.tech AI

Răspuns de la AI

Funcția suspend este o funcție care poate fi suspendată (suspend) și reluată (resume) ulterior. Acestea sunt o parte fundamentală a corutinelor în Kotlin și sunt utilizate pentru a efectua operații asincrone fără a bloca firul de execuție.

Caracteristici cheie:

  • Poate fi apelată doar dintr-o altă funcție suspend sau din contextul unei corutine. Compilatorul asigură această restricție.
  • Nu blochează firul de execuție. În timpul efectuării unei operații asincrone (de exemplu, o solicitare de rețea), funcția suspend suspendă execuția corutinei, eliberând firul pentru alte sarcini. Când operația asincronă se finalizează, corutina este reluată de unde a fost oprită.
  • Este utilizată pentru paralelism structurat. În combinație cu funcții precum launch și async din biblioteca kotlinx.coroutines, permite scrierea de cod asincron într-un stil secvențial și ușor de citit.
  • Compilatorul transformă funcțiile suspend în automate finite. Acest lucru permite păstrarea stării corutinei între punctele de suspendare.

Exemplu:

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    // Simulare a unei operații asincrone (de exemplu, o solicitare de rețea)
    delay(1000) // puncte de suspendare
    return "Date încărcate"
}

fun main() = runBlocking {
    println("Începem încărcarea...")
    val data = fetchData() // apelare funcție suspend
    println(data)
    println("Încărcarea s-a încheiat")
}

Aici, fetchData este o funcție suspend care folosește delay (o altă funcție suspend) pentru a simula o întârziere. delay este un punct de suspendare. runBlocking creează un domeniu de corutină pentru a executa main ca un fir blocant, dar în interiorul acesteia, fetchData se execută în mod asincron.