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.