Junior
Android'de DataStore Preferences ile çalıştınız mı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, çalıştım.
DataStore Preferences, AndroidX DataStore içinde bulunan, SharedPreferences'in asenkron bir karşılığıdır. Basit anahtar-değer çiftlerini güvenli bir şekilde depolamayı sağlar, Kotlin Flow veya RxJava3 üzerinde KSP kullanarak asenkron çalışma ve Protobuf/Proto DataStore veya Proto DataStore ile veri tipleri için.
DataStore Preferences'in SharedPreferences'e kıyasla temel avantajları:
- Asenkronluk: Flow veya RxJava3 kullanır, bu da ana akışın engellenmesini önler ve ANR sorunlarını ortadan kaldırır.
- Güvenlik: Atomik okuma/yazma işlemleri, veri tutarlılığını garanti eder.
- Tip güvenliği: Protobuf DataStore ile veri şeması tanımlanabilir, bu da tiplerle çalışma sırasında hataları önler.
- Reaktiflik: Verilerdeki değişiklikleri gerçek zamanlı izlemeye olanak tanır.
Kotlin Flow ile DataStore Preferences kullanımına örnek:
// DataStore oluşturma
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Veri okuma
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Veri yazma
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
KSP kullanarak tip güvenli erişim oluşturmak için örnek:
// build.gradle (:app) dosyasına eklenecek eklenti
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Örnek sürüm, güncel olanı kontrol edin
}
// build.gradle (:app) dosyasına bağımlılık ekleyin
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Güncel sürümü kontrol edin
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Güncel sürümü kontrol edin
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Güncel sürümü kontrol edin
}
// KSP için arayüz tanımı
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// KSP ile uygulama
// SettingsPrefImpl türünde bir sınıf oluşturur, bu sınıf verilere erişmek için kullanılabilir
DataStore Preferences, Android'de basit ayarların ve verilerin saklanması için önerilen yoldur ve eski SharedPreferences yerine geçer.