Sobes.tech
Junior

Kas olete töötanud Androidis DataStore Preferences'iga?

sobes.tech AI

Vastus AI-lt

Jah, see töötas.

DataStore Preferences on asünkroonne analoog SharedPreferences'ile, mis kuulub AndroidX DataStore'i. See võimaldab turvaliselt salvestada lihtsaid võti-väärtus paare, kasutades KSP Kotlin Flow või RxJava3 asünkroonseks tööks ning Protobuf/Proto DataStore või Proto DataStore andmetüüpide jaoks:

DataStore Preferences peamised eelised võrreldes SharedPreferences'iga:

  • Asünkroonsus: Töötleb Flow või RxJava3 kasutades, mis takistab peamise voolu blokeerimist ja väldib ANR probleeme.
  • Turvalisus: Atomaarsed lugemis-/kirjutusoperatsioonid tagavad andmete järjepidevuse.
  • Tüübikindlus: Protobuf DataStore'iga saab määratleda andmeskeemi, mis väldib vigu tüüpidega töötamisel.
  • Reaktiivsus: võimaldab jälgida andmete muutusi reaalajas.

Näide DataStore Preferences kasutamisest Kotlin Flow'ga:

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

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

// Andmete kirjutamine
suspend fun writeString(context: Context, key: String, value: String) {
    val preferencesKey = stringPreferencesKey(key)
    context.dataStore.edit { settings ->
        settings[preferencesKey] = value
    }
}

KSP kasutamise näide — tüübikindla juurdepääsu loomiseks:

// build.gradle (:app) lisage plugin
plugins {
 ...
 id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Näide versioonist, kontrollige ajakohasust
}

// build.gradle (:app) lisage sõltuvused
dependencies {
 ...
 implementation("androidx.datastore:datastore-preferences:1.0.0") // Kontrollige versiooni
 implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Kontrollige versiooni
 ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Kontrollige versiooni
}

// Määrake KSP liides
interface SettingsPref {
    val appName: String
    val isNotificationsEnabled: Boolean
    val theme: Int
}

// Genereerige implementatsioon KSP abil
// See loob klassi SettingsPrefImpl, mida saab kasutada andmetele juurdepääsuks

DataStore Preferences on soovitatav viis lihtsate seadete ja andmete salvestamiseks Androidis, asendades vananenud SharedPreferences'i.