Datenspeicher

Daten asynchron, einheitlich und transaktional speichern und so einige Nachteile von „SharedPreferences“ eliminieren
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
1. Mai 2024 1.1.1 - -

Abhängigkeiten deklarieren

Um eine Abhängigkeit von DataStore hinzuzufügen, müssen Sie das Google Maven-Repository zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .

Es gibt zwei Implementierungen von DataStore: Einstellungen und Protokoll: Wählen Sie eine der beiden Optionen aus. Sie können auch Abhängigkeiten ohne Android Implementierung.

Fügen Sie die Abhängigkeiten für die benötigte Implementierung in die Datei build.gradle ein. für Ihre App oder Ihr Modul:

Datenspeicher von Einstellungen

Groovig

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.1.1"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.1"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.1"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.1"
    }
    

Kotlin

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.1.1")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.1")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.1")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.1")
    }
    

Proto-Datenspeicher

Groovig

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.1"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.1"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.1"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.1"
    }
    

Kotlin

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.1")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.1")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.1")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.1")
    }
    

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .

Version 1.1

Version 1.1.1

1. Mai 2024

androidx.datastore:datastore-*:1.1.1 wurde veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

  • Geminderter Linux-Fehlalarm bei „Ressourcen-Deadlock würde auftreten“ In einem Grenzfall versuchen mehrere DataStore-Instanzen, aus verschiedenen Prozessen zu schreiben, indem sie die Dateisperre sichern.

Version 1.1.0

17. April 2024

androidx.datastore:datastore-*:1.1.0 wurde veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

Weitere Informationen finden Sie in den Versionshinweisen der Alpha- und Betaversion 1.1.0. Einige der wichtigsten Aktualisierungen in Version 1.1.0 sind:

  • DataStore unterstützt jetzt mehrere Prozesse, die auf dieselbe Datei zugreifen, mit Unterstützung für die prozessübergreifende Beobachtbarkeit.
  • Mit der neuen Storage-Schnittstelle können Sie anpassen, wie Ihre Datenmodelle gespeichert oder serialisiert werden.
  • Sie können DataStore jetzt in Kotlin Multiplatform-Projekten verwenden.

Version 1.1.0-rc01

3. April 2024

androidx.datastore:datastore-*:1.1.0-rc01 wurde veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den updateData-Aufrufe die Schreibvorgänge auf dem Laufwerk nicht optimieren konnten, wenn die neuen Daten mit den alten Daten identisch waren (d64cfb5).
  • Es wurde eine Race-Bedingung behoben, bei der MultiProcess DataStore während der Initialisierung möglicherweise Entwertungen verpasst. ((b/326141553),(094c2dd))

Version 1.1.0-beta02

6. März 2024

androidx.datastore:datastore-*:1.1.0-beta02 wurde veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Bei der Leistungsverbesserung für „DataStore“ werden nur dann Benachrichtigungen über Updates erhoben, wenn sie erkannt werden. (b/267792241) <ph type="x-smartling-placeholder">
      </ph>
    • Beachten Sie, dass diese Änderung in Ihren Tests möglicherweise UncompletedCoroutinesError auslösen kann, wenn Sie die Coroutines-Testbibliothek verwenden. Um dieses Problem zu vermeiden, musst du beim Initialisieren von DataStore in deinen Tests die TestScope.backgroundScope bestehen.
  • Das Problem, dass verschachtelte updateData-Aufrufe für dieselbe Instanz zu einem Deadlock führten, wurde behoben. (b/241760537)
  • DataStore gibt IOExceptions nicht mehr aus, wenn SharedPreferences während der Migration nicht gelöscht werden kann. (b/195553816)
  • Das Problem, bei dem die Umbenennung von Dateien während updateData in Nicht-Android-JVM-Umgebungen fehlgeschlagen ist, wurde behoben. (b/203087070)
  • Das Problem, dass CorruptionException nach der Initialisierung von DataStore nicht verarbeitet wurde, wurde behoben. (b/289582516)

Version 1.1.0-beta01

10. Januar 2024

androidx.datastore:datastore-*:1.1.0-beta01 wurde ohne Änderungen seit dem 1.1.0-alpha07 freigegeben. Version 1.1.0-beta01 enthält diese Commits.

Version 1.1.0-alpha07

29. November 2023

androidx.datastore:datastore-*:1.1.0-alpha07 wurde veröffentlicht. Version 1.1.0-alpha07 enthält diese Commits.

API-Änderungen

  • MultiProcessDataStoreFactory-Methoden befinden sich nicht mehr in der Testphase.Die Anmerkung @ExperimentalMultiProcessDataStore wurde vollständig entfernt. (Ieee54, I8e607)

Fehlerkorrekturen

  • Roll-out der Entfernung der @ExperimentalMultiProcessDataStore-Annotationen für 1.1.0-alpha07 durchführen. (I8e607)

Version 1.1.0-alpha06

1. November 2023

androidx.datastore:datastore-*:1.1.0-alpha06 wurde veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Factory-Methode createSingleProcessCoordinator empfängt jetzt einen Dateipfad (String, java.io.File und okio.Path), um mit createMultiProcessCoordinator konsistent zu sein. (I211c8, b/305755935)

Version 1.1.0-alpha05

6. September 2023

androidx.datastore:datastore-*:1.1.0-alpha05 wurde veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

  • Datastore FileStorage ist jetzt öffentlich verfügbar, sodass Clients benutzerdefinierte Parameter angeben können. (Icb985)
  • OkioStorage-Konstruktor wurde so geändert, dass InterProcessCoordinator akzeptiert wird, damit er unter Android mit MultiProcessCoordinator verwendet werden kann. (Iecea3)

Fehlerkorrekturen

  • Fehler behoben, bei dem MultiProcessCoordinator nicht mehrere Dateien im selben Verzeichnis überwachen konnte
  • Es konnten keine doppelten Dateien gefunden werden, wenn Dateipfade nicht normalisiert wurden.
  • Korrigieren Sie die falschen von RxDataStore#isDisposed zurückgegebenen Werte.
  • Fehlende Proguard-Konfiguration für Artefakt datstore-preferences-core wurde korrigiert.

Version 1.1.0-alpha04

5. April 2023

androidx.datastore:datastore-*:1.1.0-alpha04 wurde veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

Fehlerkorrekturen

  • Verbessern Sie die interne Implementierung, um eine Race-Bedingung zu vermeiden, bei der der Datenfluss von DataStore nach einer Aktualisierung einen älteren Wert ausgibt.

Version 1.1.0-alpha03

24. März 2023

androidx.datastore:datastore-*:1.1.0-alpha03 wurde veröffentlicht.

Fehlerkorrekturen

  • Abhängigkeitseinschränkungen aus Maven-Artefakten wurden entfernt, um ein Build-Problem in nativen Kotlin-Zielen zu umgehen (b/274786186, KT-57531).

Version 1.1.0-alpha02

22. März 2023

androidx.datastore:datastore-*:1.1.0-alpha02 wurde veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

Hinweis

Beachten Sie, dass diese Version eine wichtige interne Refaktorierung enthält, bei der die Implementierungen für Ein- und Mehrprozess-DataStore-Implementierungen zusammengeführt werden. Achten Sie daher auf mögliche unerwünschte Verhaltensänderungen, z.B. den Zeitpunkt von Updatebenachrichtigungen. Mit der Issue Tracker-Komponente können Sie solche Änderungen melden.

Neue Funktionen

  • Sie können jetzt DataStore in KMM-Projekten verwenden. Nicht auf Android basierende Ziele von DataStore befinden sich noch in der Testphase. Wir haben jedoch beschlossen, Versionen zusammenzuführen, um Entwicklern das Testen zu erleichtern.
  • Multiprozessfunktionen wurden von androidx.datastore.multiprocess nach androidx.datastore.core verschoben.
  • Fügen Sie eine neue Factory-Methode in androidx.datastore.core.MultiProcessDataStoreFactory hinzu, um DataStore-Instanzen mit Storage-Objekten für Dateivorgänge zu erstellen.
  • Fügen Sie eine neue Schnittstelle InterProcessCoordinator hinzu, die die Kommunikation mehrerer DataStore-Instanzen zwischen Prozessen erleichtert. Die Implementierung mehrerer Prozesse von InterProcessCoordinator ist nur unter Android verfügbar.

API-Änderungen

  • InterProcessCoordinator zu StorageConnection in der Datastore-Core-Schnittstelle (I555bb) hinzufügen
  • Ändern Sie die APIs in MultiProcessDataStoreFactory im Datenspeicherkern so, dass Storage verwendet wird. (Iac02f)
  • Öffentliche APIs in datastore-multiprocess in datastore-core (I76d7c) verschieben
  • PreferencesSerializer aus datastore-preferences-core (I4b788) verfügbar gemacht
  • Annotation @JvmDefaultWithCompatibility hinzufügen (I8f206)

Version 1.1.0-alpha01

9. November 2022

androidx.datastore:datastore-*:1.1.0-alpha01 wurde veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Unterstützung von Multi-Prozess-Anwendungsfällen, bei denen die Datenkonsistenz in DataStore Instanzen prozessübergreifend garantiert ist. Fügen Sie MultiProcessDataStoreFactory#create hinzu, um solche DataStore-Instanzen zu erstellen.
  • Neue Speicherschnittstelle, über die der zugrunde liegende Speichermechanismus für Datastore ausgetauscht werden kann. Implementierungen für java.io und okio werden bereitgestellt. DataStore Factorys haben neue Methoden, die dieses Storage-Objekt akzeptieren.

API-Änderungen

  • Ändern Sie die APIs in MultiProcessDataStoreFactory im Datenspeicherkern so, dass Storage verwendet wird. (Iac02f)
  • Öffentliche APIs in datastore-multiprocess in datastore-core (I76d7c) verschieben
  • PreferencesSerializer aus datastore-preferences-core (I4b788) verfügbar gemacht

Version 1.0.0

Version 1.0.0

4. August 2021

androidx.datastore:datastore-*:1.0.0 wurde veröffentlicht. Version 1.0.0 enthält diese Commits.

Hauptfunktionen von Version 1.0.0

Jetpack DataStore ist eine Datenspeicherlösung, mit der Sie Schlüssel/Wert-Paare oder typisierte Objekte mit Protokollzwischenspeichern speichern können. DataStore verwendet Kotlin-Koroutinen und Flow, um Daten asynchron, konsistent und transaktional zu speichern.

Version 1.0.0-rc02

21. Juli 2021

androidx.datastore:datastore-*:1.0.0-rc02 wurde veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde verdeutlicht, dass SharedPreferencesMigration nicht ausgeführt wird, wenn keine Schlüssel vorhanden sind. (Icfa32, b/192824325)
  • Es wurde ein Fehler behoben, bei dem SharedPreferencesMigration mit MIGRATE_ALL_KEYS eine Ausnahme auslöste, wenn der angeforderte Schlüssel noch nicht vorhanden war. (Ie318a, b/192824325)

Version 1.0.0-rc01

30. Juni 2021

androidx.datastore:datastore-*:1.0.0-rc01 wurde veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem eine Java-Datei versehentlich der endgültigen JAR-Datei hinzugefügt wurde (I65d96, b/188985637).

Version 1.0.0-beta02

16. Juni 2021

androidx.datastore:datastore-*:1.0.0-beta02 wurde veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

Fehlerkorrekturen

Version 1.0.0-beta01

21. April 2021

androidx.datastore:datastore-*:1.0.0-beta01 wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

API-Änderungen

  • JVM-Überlastungen für reine Kotlin-Methoden entfernen (I2adc7)

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem Datenspeicherdelegierte zu Datenlecks führen konnten (Ie96fc, b/184415662).

Version 1.0.0-alpha08

10. März 2021

androidx.datastore:datastore-*:1.0.0-alpha08 wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • Sie können jetzt dem Property-Delegaten für dataStore und preferencesDataStore eine Migration hinzufügen, die vom Kontext abhängt. (I4ef69, b/173726702)
  • Fügt Hilfsfunktionen zum Abrufen des Dateinamens hinzu, wenn Sie datastore delegate oder context.createDataStore nicht mehr verwenden (I60f9a)
  • Die Serializer writeTo und readFrom werden jetzt angehalten. Wenn Sie einen Serializer implementiert haben, müssen Sie Ihre Funktionen so aktualisieren, dass sie Aussetzungsfunktionen sind. (I1e58e)
  • Property-Bevollmächtigte für RxDataStore-Nutzer hinzugefügt. (Ied768, b/173726702)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)

Version 1.0.0-alpha07

24. Februar 2021

androidx.datastore:datastore-*:1.0.0-alpha07 wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die Erweiterungsfunktion Context.createDataStore wurde entfernt und durch einen globalDataStore-Property-Delegaten ersetzt. Rufen Sie globalDataStore einmal auf der obersten Ebene Ihrer Kotlin-Datei auf. Beispiel:

    val Context.myDataStore by dataStore(...)
    

    Legen Sie dies auf der obersten Ebene Ihrer Kotlin-Datei ab, sodass es nur eine Instanz gibt. (I57215, b/173726702)

  • Die RxDataStore-Funktionen befinden sich jetzt in einer RxDataStore-Klasse anstelle von Erweiterungsfunktionen in DataStore. (Idccdb, b/177691248)

  • Wenn Sie EncryptedSharedPreferences (oder SharedPreferences per Direktstart) zu DataStore migrieren möchten, können Sie dies jetzt mit dem neuen SharedPreferencesMigration-Konstruktor tun, mit dem Sie SharedPreferences einfügen können. (I8e04e, b/177278510)

Fehlerkorrekturen

  • DataStore gibt jetzt eine Ausnahme aus, wenn mehrere aktive Datenspeicher für dieselbe Datei vorhanden sind. Wenn Sie Ihren Datenspeicher nicht als Singleton verwaltet haben oder nicht sichergestellt haben, dass nicht zwei Instanzen von Datenspeicher für eine Datei gleichzeitig aktiv sind, werden jetzt beim Lesen oder Schreiben in DataStore Ausnahmen angezeigt. Diese Probleme können behoben werden, indem Sie Ihren Datenspeicher als Singleton verwalten. (Ib43f4, b/177691248)
  • Das Abbruchverhalten beim Beenden des Aufrufbereichs wurde behoben. (I2c7b3)

Version 1.0.0-alpha06

13. Januar 2021

androidx.datastore:datastore-*:1.0.0-alpha06 wurde veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Es wurden RxJava-Wrapper für DataStore hinzugefügt. Die datastore-rxjava2/3-Artefakte enthalten die Wrapper für die wichtigsten DataStore APIs (RxDataStore, RxDataStoreBuilder und RxDataMigration). Die datastore-preferences-rxjava2/3-Artefakte enthalten einen Builder zum Erstellen eines Einstellungs-Datenspeichers.

API-Änderungen

  • CorruptionHandler-Oberfläche ausblenden. Es gab keinen Grund, sie öffentlich zu machen, da die DataStore Factory nur einen ReplaceFileCorruptionHandler akzeptiert. (I0b3b3, b/176032264)
  • Die Methode preferencesKey<T>(name: String): Key<T> wurde entfernt und durch Methoden ersetzt, die für jeden unterstützten Typ spezifisch sind. Zum Beispiel ist preferencesKey<Int>("int") jetzt intPreferencesKey("int") (Ibcfac, b/170311106).

Fehlerkorrekturen

  • Korrigierte Dokumentation in DataStoreFactory, bei der nicht berücksichtigt wurde, dass die Datenspeicherdatei im Unterverzeichnis „datastore/“ erstellt wird. (Ica222)

Version 1.0.0-alpha05

2. Dezember 2020

androidx.datastore:datastore-*:1.0.0-alpha05 wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Eine bessere Dokumentation und Ausnahmen für gleichzeitige Schreibvorgänge aus Datenspeichern wurden hinzugefügt. (Ia98a2, b/173522155, b/173726702)
  • Jetzt wird das Schließen des an Serializer.writeTo() übergebenen OutputStreams zugelassen (ist jedoch nicht erforderlich). (I5c9bf, b/173037611)

Version 1.0.0-alpha04

17. November 2020

androidx.datastore:datastore-*:1.0.0-alpha04 wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit der Paketerstellung, das den folgenden Absturz im Präferenzdatenspeicher 1.0.0-alpha03 verursachte, wurde behoben: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences <ph type="x-smartling-placeholder">

Version 1.0.0-alpha03

11. November 2020

androidx.datastore:datastore-*:1.0.0-alpha03 wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

Neue Funktionen

  • In den Einstellungen werden jetzt doppelte Werte unterstützt. Dies ist nützlich, wenn Sie mehr Genauigkeit als Gleitkommazahlen benötigen (I5be8f, b/169471808).

API-Änderungen

  • Es wurde eine reine Kotlin-Abhängigkeit für den Datenspeicher erstellt, um eine schnellere Kompilierung zu ermöglichen. androidx.datastore:datastore-core enthält die Kern-APIs nur für Kotlin und androidx.datastore:datastore enthält die von Android abhängigen APIs, einschließlich des SharedPreferencesMigration- und Context.createDataStore-Konstruktors. (I42d75, b/168512698).
  • Aufteilen von Zielen für Präferenzdatenspeicher zur schnelleren Codierung von Codierungen (Ia3c19)
  • Serialisierer erfordern jetzt eine neue Eigenschaft für den Standardwert, der verwendet wird, wenn sich keine Daten auf dem Laufwerk befinden. Dies vereinfacht die Implementierung benutzerdefinierter Serialisierer, sodass Nutzer keine leeren Eingabestreams in Sonderfällen benötigen (leere Eingabestreams werden nicht mit JSON geparst).

    • Außerdem gibt es jetzt eine Prüfung, um zu bestätigen, dass der an writeTo() bereitgestellte Ausgabestream nicht geschlossen ist. Wenn er geschlossen ist, werden Ausnahmen ausgelöst (I16e29).
  • Der Konstruktor für SharedPreferencesView wurde intern festgelegt. Sie war ursprünglich öffentlich, um Tests zu ermöglichen. Die Tests sollten stattdessen eine SharedPreferencesMigration erstellen und damit testen. (I93891)

Fehlerkorrekturen

  • Der produceFile-Parameter für DataStoreFactory und PreferenceDataStoreFactory ist jetzt der letzte Parameter in der Liste. Damit kannst du die Lambda-Syntax nach Kotlin verwenden. (Ibe7f1, b/169425442)
  • Gemäß den neuen expliziten API-Anforderungen für Kotlin (I5ae1e)

Bekannte Probleme

  • Der bevorzugte Datenspeicher stürzt mit java.lang.NoClassDefFoundError ab. (b/173036843)

Version 1.0.0-alpha02

14. Oktober 2020

androidx.datastore:datastore-core:1.0.0-alpha02 und androidx.datastore:datastore-preferences:1.0.0-alpha02 wurden veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Absicherung gegen Mutation im Datenspeicherkern hinzugefügt. Mutation unterbricht die Datenspeichernutzung für Personen, die den Datenspeicher mit Nicht-Proto- und Nicht-Präferenz-Typen verwenden (I6aa84)
  • Die Methode toString wurde zu „Preferences.kt“ hinzugefügt, um die Fehlerbehebung zu vereinfachen (I96006).
  • Ausnahme zum Schutz vor Missbrauch von DataStore.Preferences (I1134d) hinzugefügt
  • Es wurde ein Fehler behoben, durch den die App beim Start abstürzte (I69237, b/168580258).

Version 1.0.0-alpha01

2. September 2020

androidx.datastore:datastore-core:1.0.0-alpha01 und androidx.datastore:datastore-preferences:1.0.0-alpha01 wurden veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

Jetpack DataStore ist eine neue und verbesserte Datenspeicherlösung, die SharedPreferences ersetzen soll. DataStore baut auf Kotlin-Koroutinen und Flow auf und bietet zwei verschiedene Implementierungen:

  • Proto DataStore zum Speichern typisierter Objekte (unterstützt durch Protokollzwischenspeicher)
  • Einstellungen-Datenspeicher, der Schlüssel/Wert-Paare speichert

Die Daten werden asynchron, einheitlich und transaktional gespeichert, was die meisten Nachteile von SharedPreferences hebt.