Junior
Android-də DataStore Preferences ilə işlədinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, işlədim.
DataStore Preferences, AndroidX DataStore daxilində olan, SharedPreferences-in asinxron analoqudur. O, KSP istifadə edərək Kotlin Flow və ya RxJava3 üzərində sadə açar-dəyər cütlərini təhlükəsiz saxlamağa imkan verir və Protobuf/Proto DataStore və ya Proto DataStore ilə məlumat tipləri üçün.
DataStore Preferences-in SharedPreferences ilə müqayisədə əsas üstünlükləri:
- Asinxron: Flow və ya RxJava3 ilə işləyir, bu da əsas axını bloklamadan və ANR problemlərindən qaçmağa imkan verir.
- Təhlükəsizlik: Atomik oxuma/yazma əməliyyatları məlumatların ardıcıllığını təmin edir.
- Tip təhlükəsizliyi: Protobuf DataStore ilə məlumat sxemini təyin etmək mümkündür, bu da tiplərlə işləyərkən səhvləri qarşısını alır.
- Reaktivlik: Məlumatlarda dəyişiklikləri real vaxt rejimində izləməyə imkan verir.
Kotlin Flow ilə DataStore Preferences istifadə nümunəsi:
// DataStore yaradılması
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Məlumatların oxunması
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Məlumatların yazılması
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
KSP istifadə edərək tip təhlükəsiz giriş üçün nümunə:
// build.gradle (:app) faylında plugin əlavə edin
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Nümunə versiya, aktualını yoxlayın
}
// build.gradle (:app) faylında asılılıqları əlavə edin
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Aktual versiyanı yoxlayın
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Aktual versiyanı yoxlayın
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Aktual versiyanı yoxlayın
}
// KSP üçün interfeys təyin edin
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// KSP ilə implementasiyanı yaradın
// Bu, SettingsPrefImpl tipində sinif yaradacaq, ona məlumatlara giriş üçün istifadə edilə bilər
DataStore Preferences Android-də sadə tənzimləmələri və məlumatları saxlamaq üçün tövsiyə olunan yoldur və köhnəlmiş SharedPreferences yerinə istifadə edilir.