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