Haben Sie mit DataStore Preferences in Android gearbeitet?
sobes.tech KI
Antwort von AI
Ja, ich habe gearbeitet.
DataStore Preferences ist ein asynchrones Äquivalent zu SharedPreferences, das in AndroidX DataStore enthalten ist. Es ermöglicht das sichere Speichern einfacher Schlüssel-Wert-Paare, unter Verwendung von KSP auf Kotlin Flow oder RxJava3 für asynchrone Arbeit und Protobuf/Proto DataStore oder Proto DataStore für Datentypen.
Die wichtigsten Vorteile von DataStore Preferences im Vergleich zu SharedPreferences:
- Asynchronität: Funktioniert mit Flow oder RxJava3, verhindert Blockierungen im Hauptthread und vermeidet ANR-Probleme.
- Sicherheit: Atomare Lese-/Schreiboperationen garantieren Datenkonsistenz.
- Typensicherheit: Mit Protobuf DataStore kann ein Datenschema definiert werden, was Fehler bei der Arbeit mit Typen vermeidet.
- Reaktivität: Ermöglicht die Überwachung von Datenänderungen in Echtzeit.
Beispiel für die Verwendung von DataStore Preferences mit Kotlin Flow:
// Erstellen des DataStore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Daten lesen
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Daten schreiben
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
Beispiel für die Verwendung von KSP zur Erstellung typsicher Zugriffe:
// In build.gradle (:app) füge das Plugin hinzu
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Beispielversion, überprüfe die aktuelle
}
// In build.gradle (:app) füge Abhängigkeiten hinzu
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Überprüfe die aktuelle Version
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Überprüfe die aktuelle Version
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Überprüfe die aktuelle Version
}
// Definition des Interfaces für KSP
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// Generierung der Implementierung mit KSP
// Es wird eine Klasse vom Typ SettingsPrefImpl erstellt, die zum Zugriff auf die Daten verwendet werden kann
DataStore Preferences ist die empfohlene Methode zum Speichern einfacher Einstellungen und Daten in Android, und ersetzt die veralteten SharedPreferences.