Sobes.tech
Junior

Ar dirbote su DataStore Preferences Android?

sobes.tech AI

Atsakymas iš AI

Taip, dirbo.

DataStore Preferences yra asinchroninis SharedPreferences analogas, kuris yra AndroidX DataStore sudėtyje. Jis leidžia saugiai saugoti paprastus raktas-verčių poras, naudojant KSP Kotlin Flow arba RxJava3 asinchroniniam darbui ir Protobuf/Proto DataStore arba Proto DataStore duomenų tipams:

Pagrindiniai DataStore Preferences pranašumai lyginant su SharedPreferences:

  • Asinchroniškumas: Dirba naudojant Flow arba RxJava3, kas užkerta kelią pagrindinio srauto užblokavimui ir išvengia ANR problemų.
  • Saugumas: Atominės skaitymo/rašymo operacijos užtikrina duomenų nuoseklumą.
  • Tipų saugumas: Su Protobuf DataStore galima apibrėžti duomenų schemą, kas išvengia klaidų dirbant su tipais.
  • Reaktyvumas: Leidžia stebėti duomenų pokyčius realiu laiku.

Pavyzdys naudojant DataStore Preferences su Kotlin Flow:

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

// Duomenų skaitymas
suspend fun readString(context: Context, key: String): String? {
    val preferencesKey = stringPreferencesKey(key)
    val preferences = context.dataStore.data.first()
    return preferences[preferencesKey]
}

// Duomenų įrašymas
suspend fun writeString(context: Context, key: String, value: String) {
    val preferencesKey = stringPreferencesKey(key)
    context.dataStore.edit { settings ->
        settings[preferencesKey] = value
    }
}

Pavyzdys naudojant KSP kuriant tipų saugų prieigą:

// build.gradle (:app) pridėkite plėtinį
plugins {
 ...
 id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Pavyzdinė versija, patikrinkite aktualumą
}

// build.gradle (:app) pridėkite priklausomybes
dependencies {
 ...
 implementation("androidx.datastore:datastore-preferences:1.0.0") // Patikrinkite aktualią versiją
 implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Patikrinkite aktualią versiją
 ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Patikrinkite aktualią versiją
}

// Nustatykite KSP interfeisą
interface SettingsPref {
    val appName: String
    val isNotificationsEnabled: Boolean
    val theme: Int
}

// Sugeneruokite realizaciją naudodami KSP
// Tai sukurs klasę SettingsPrefImpl, kurią galėsite naudoti duomenų prieigai

DataStore Preferences yra rekomenduojamas būdas saugoti paprastus nustatymus ir duomenis Android, pakeičiant pasenusius SharedPreferences.