Sobes.tech
Junior

Vai esat strādājis ar DataStore Preferences Android?

sobes.tech AI

Atbilde no AI

Jā, tas darbojās.

DataStore Preferences ir asinhronais analoga SharedPreferences, kas ir iekļauts AndroidX DataStore. Tas ļauj droši glabāt vienkāršas atslēgas-vertības pārus, izmantojot KSP uz Kotlin Flow vai RxJava3 asinhronai darbībai un Protobuf/Proto DataStore vai Proto DataStore datu tipu glabāšanai:

Galvenās DataStore Preferences priekšrocības salīdzinājumā ar SharedPreferences:

  • Asinhronitāte: Darbojas ar Flow vai RxJava3, novēršot galvenā pavediena bloķēšanu un novēršot ANR problēmas.
  • Drošība: Atomāras lasīšanas/ierakstīšanas operācijas nodrošina datu konsekvenci.
  • Tipu drošība: Ar Protobuf DataStore var definēt datu shēmu, novēršot kļūdas ar datu tipiem.
  • Reaktivitāte: ļauj novērot datu izmaiņas reāllaikā.

Piemērs DataStore Preferences izmantošanai ar Kotlin Flow:

// DataStore izveide
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")

// Datu lasīšana
suspend fun readString(context: Context, key: String): String? {
    val preferencesKey = stringPreferencesKey(key)
    val preferences = context.dataStore.data.first()
    return preferences[preferencesKey]
}

// Datu rakstīšana
suspend fun writeString(context: Context, key: String, value: String) {
    val preferencesKey = stringPreferencesKey(key)
    context.dataStore.edit { settings ->
        settings[preferencesKey] = value
    }
}

KSP izmantošanas piemērs — tipa drošai piekļuvei:

// build.gradle (:app) pievienojiet spraudni
plugins {
 ...
 id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Piemēra versija, pārbaudiet aktuālo
}

// build.gradle (:app) pievienojiet atkarības
dependencies {
 ...
 implementation("androidx.datastore:datastore-preferences:1.0.0") // Pārbaudiet aktuālo versiju
 implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Pārbaudiet aktuālo versiju
 ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Pārbaudiet aktuālo versiju
}

// Definējiet interfeisu KSP
interface SettingsPref {
    val appName: String
    val isNotificationsEnabled: Boolean
    val theme: Int
}

// Ģenerējiet realizāciju ar KSP
// Tas izveidos klasi SettingsPrefImpl, ko varēsiet izmantot datu piekļuvei

DataStore Preferences ir ieteicamais veids, kā glabāt vienkāršus iestatījumus un datus Android, aizstājot novecojušo SharedPreferences.