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í.