Room Database'de SQLite Sorguları Coroutine'lerle Hızlandırılıyor
Android uygulamalarında veritabanı sorguları genellikle ağır işlemlerdir. Room Database, SQLite üzerine kurulu bir soyutlama katmanı sunuyor; ancak sorgular ana thread'i bloklamadan çalıştırılmazsa arayüz donabilir.
Coroutine'ler bu sorunu temiz bir şekilde çözer. Kotlin'in hafif eş zamanlılık modeli sayesinde veritabanı işlemlerini background thread'de çalıştırmak, sonra sonucu ana thread'e geri getirmek basit hale geliyor.
Room'da coroutine desteği yerleşik. DAO (Data Access Object) metodlarını suspend fonksiyon olarak tanımlaman yeterli:
1@Dao2interface UserDao {3@Query("SELECT * FROM users")4suspend fun getAllUsers(): List<User>57suspend fun insertUser(user: User)8}ViewModel veya Repository'de bu fonksiyonları viewModelScope.launch veya lifecycleScope.launch içinde çağırıyorsun. Coroutine otomatik olarak background'da çalışır, sonuç gelince UI güncellenir.
Flow kullanarak gerçek zamanlı veri güncellemeleri de mümkün. Veritabanı değiştiğinde gözlemci otomatik bilgilendirilir:
1@Query("SELECT * FROM users")2fun observeUsers(): Flow<List<User>>Bu yaklaşım, uygulamanın yanıt verme hızını artırıyor ve veri senkronizasyonunu kolaylaştırıyor. Özellikle büyük veri setleriyle çalışan uygulamalarda fark çok net oluyor.
0 yorum