Sobes.tech
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.