Sobes.tech
Junior — Middle

Prečo je v knižnici Room potrebné deklarovať funkcie ako suspend na prácu s asynchrónnymi operáciami?

sobes.tech AI

Odpoveď od AI

V knižnici Room môžu operácie vstupu/výstupu (napríklad dotazy do databázy) trvať značnú dobu a blokovať hlavné vlákno, čo povedie k „zamrznutiu“ rozhrania. Deklarovaním funkcií DAO ako suspend používame Kotlin Coroutines, ktoré umožňujú tieto operácie vykonávať asynchrónne a neblokujú vlákno UI.

Funkcie suspend môžu byť volané z korutín, čo zjednodušuje písanie asynchrónneho kódu, robí ho čitateľnejším a ľahšie udržiavateľným, bez potreby manuálneho spravovania vlákien alebo používania callbackov.

Príklad DAO s funkciou suspend:

@Dao
interface UserDao {
    @Query("SELECT * FROM users WHERE id = :id")
    suspend fun getUserById(id: Int): User
}

Týmto spôsobom suspend pomáha bezpečne a efektívne vykonávať operácie s databázou na pozadí.