DataStore

Daten asynchron, konsistent und transaktional speichern, um einige der Nachteile von SharedPreferences zu überwinden
Letzte Aktualisierung Stabile Version Releasekandidat Betarelease Alpha-Release
22. Oktober 2025 1.1.7 - 1.2.0-beta01 -

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von DataStore hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Es gibt zwei Implementierungen von DataStore: Preferences und Proto. Wählen Sie eine der beiden Optionen aus. Sie können auch Android-kostenlose Abhängigkeiten zu beiden Implementierungen hinzufügen.

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

Preferences DataStore

Groovy

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

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

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

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

Kotlin

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

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

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

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

Proto DataStore

Groovy

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

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

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

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

Kotlin

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

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

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

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem stimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.2

Version 1.2.0-beta01

22. Oktober 2025

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

API-Änderungen

  • Machen Sie CorruptionHandler öffentlich. (I9ac35, b/452406457)
  • androidx.core.util.Function in GuavaDataStore verwenden. (I71eae, b/448563999)
  • Fügen Sie eine Überladung für GuavaDataStore.from hinzu, die anstelle von CoroutineContext einen Executor akzeptiert. (I989fa, b/448563183)

Fehlerkorrekturen

  • Beheben Sie java.lang.UnsatisfiedLinkError, wenn Sie DataStore in einer App verwenden, die mit R8 optimiert wurde, aber getDefaultProguardFile('android-proguard-optimize.txt') nicht verwendet. (I27d0d, b/434696293)
  • Es wurde ein Problem behoben, bei dem GuavaDataStore-Vorgänge fälschlicherweise im aufrufenden Thread (z.B. dem Hauptthread) anstelle des angegebenen E/A-Dispatchers ausgeführt werden konnten. (Ic91ea,b/441801112)

Version 1.2.0-alpha02

7. Mai 2025

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

API-Änderungen

  • Unterstützung für mehrere Prozesse in GuavaDataStore hinzugefügt. (e0d608a).
  • Es wurde eine Hilfsmethode zum Erstellen eines GuavaDataStore aus einem DataStore hinzugefügt. (9af26f4)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich. (Idb6b5)
  • Ersetzen Sie die vorhandene datastore-Überladung durch eine Delegatenmethode, um einen DataStore zu initialisieren, der während des direkten Starts verwendet werden soll. (If71b9)

Version 1.2.0-alpha01

26. März 2025

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

Neue Funktionen

  • Das Modul datastore-guava wurde hinzugefügt, um APIs für Java- und Guava-Nutzer über GuavaDataStore bereitzustellen.ListenableFuture (Iadd5e0)
  • Die Verwendung von DataStore im DirectBoot-Modus wird jetzt unterstützt. Wenn Sie einen Datenspeicher erstellen möchten, der im Direct Boot-Modus verwendet werden soll, muss er im geräteschutzgesicherten Speicher erstellt werden. Dies kann mit den folgenden neuen DataStore-APIs erreicht werden: createInDeviceProtectedStorage() in DataStoreFactory und deviceProtectedDataStore() in DataStoreDelegate. (Ib90e56)

API-Änderungen

  • Wir haben PreferencesFileSerializer hinzugefügt, das die androidx.datastore.core.Serializer-Schnittstelle für die Verwendung mit FileStorage implementiert. (I4c71f3)

Fehlerkorrekturen

  • Das FileNotFoundException-Problem in OkioStorage beim Starten wurde behoben, indem ein zweiter Versuch zum Lesen von Daten im Falle einer Race Condition hinzugefügt wurde. (I43b3fb, b/337870543)
  • Der Standardkonstruktor für ReplaceFileCorruptionHandler wurde für die allgemeine Codeverwendung definiert. (I795b05, b/358138957)

Version 1.1

Version 1.1.7

20. Mai 2025

androidx.datastore:datastore-*:1.1.7 ist veröffentlicht. Version 1.1.7 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit fehlenden Proguard-Regeln im Android-Artefakt von datastore-preferences-core wurde behoben. (3f3f6e, b/413078297)

Version 1.1.6

7. Mai 2025

androidx.datastore:datastore-*:1.1.6 ist veröffentlicht. Version 1.1.6 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Gradle-Metadaten in Version 1.1.5 beschädigt waren. Dieses Problem wurde durch einen Fehler in der neuen AGP KMP-Plugin-DSL verursacht, der verhinderte, dass Metadaten für alle Zielplattformen automatisch einbezogen wurden. Aufgrund des Fehlers sind einige DataStore-Android-Methoden in den Builds von Kunden nicht mehr sichtbar. Zur Behebung des Problems muss die ältere android-DSL in build.gradle anstelle von androidLibrary verwendet werden. (7801abf)

Version 1.1.5

23. April 2025

androidx.datastore:datastore-*:1.1.5 ist veröffentlicht. Version 1.1.5 enthält diese Commits.

Fehlerkorrekturen

  • Um Probleme mit CorruptionException in PreferencesDataStore zu beheben, wurde der Standardspeicher von OkioStorage in FileStorage geändert. Diese Änderung wurde durch die Einführung eines PreferencesFileSerializer umgesetzt. b/346197747

Version 1.1.4

26. März 2025

androidx.datastore:datastore-*:1.1.4 ist veröffentlicht. Version 1.1.4 enthält diese Commits.

Fehlerkorrekturen

  • Ersetzen Sie den Standardspeicher von OkioStorage durch FileStorage, um die Zuverlässigkeit zu verbessern, indem Sie CorruptionException reduzieren. (I71181, b/346197747)

Version 1.1.3

26. Februar 2025

androidx.datastore:datastore-*:1.1.3 ist veröffentlicht. Version 1.1.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein FileNotFoundException-Problem in OkioStorage, das beim Start der App aufgetreten ist, wurde behoben. Wenn der erste Versuch, die Datei zu lesen, nicht erfolgreich ist, wird ein zweiter Versuch unternommen, falls ein Race Condition aufgetreten ist, weil die Datei während des ersten Lesevorgangs von einem anderen Prozess erstellt wurde. (I43b3f, b/337870543)

Version 1.1.2

15. Januar 2025

androidx.datastore:datastore-*:1.1.2 ist veröffentlicht. Version 1.1.2 enthält diese Commits.

Fehlerkorrekturen

  • Die Warm-Read-Latenz (DataStore.data.first()) wurde um das Achtfache verbessert. (22b8a40)
  • ReplaceFileCorruptionHandler kann aus KMP-Gemeinschaftscode erstellt werden. (7632e839)

Version 1.1.1

1. Mai 2024

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

Fehlerkorrekturen

  • Der Linux-Fehlalarm zum Fehler „Resource deadlock would occur“ (Ressourcen-Deadlock würde auftreten) wurde in einem Grenzfall behoben, in dem mehrere DataStore-Instanzen versuchen, aus verschiedenen Prozessen zu schreiben, indem sie die Dateisperre zurückziehen.

Version 1.1.0

17. April 2024

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

Wichtige Änderungen seit Version 1.0.0

Weitere Informationen finden Sie in den Versionshinweisen zu den Alpha- und Betaversionen von 1.1.0. Einige der wichtigsten Neuerungen in Version 1.1.0 sind:

  • DataStore unterstützt jetzt mehrere Prozesse, die auf dieselbe Datei zugreifen, und bietet Unterstützung für die Beobachtbarkeit über Prozesse hinweg.
  • Mit der neuen Speicherschnittstelle 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 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Die Leistungseinbußen wurden behoben, die auftraten, wenn updateData-Aufrufe die Festplatten-Schreibvorgänge nicht optimierten, wenn die neuen Daten mit den alten Daten übereinstimmten (d64cfb5).
  • Es wurde eine Race-Bedingung behoben, bei der MultiProcess DataStore während der Initialisierung möglicherweise Invalidierungen verpasst hat. ((b/326141553),(094c2dd))

Version 1.1.0-beta02

6. März 2024

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

Fehlerkorrekturen

  • Bei der Leistungsverbesserung für DataStore werden nur Updatebenachrichtigungen erfasst, wenn sie beobachtet werden. (b/267792241)
    • Diese Änderung kann UncompletedCoroutinesError in Ihren Tests auslösen, wenn Sie die Coroutines-Testbibliothek verwenden. Achten Sie darauf, dass Sie beim Initialisieren von DataStore in Ihren Tests die TestScope.backgroundScope übergeben, um dieses Problem zu vermeiden.
  • ​Das Problem wurde behoben, dass verschachtelte updateData-Aufrufe auf derselben Instanz zu einem Deadlock führen. (b/241760537)
  • In DataStore wird nicht mehr IOExceptions ausgegeben, wenn SharedPreferences während der Migration nicht gelöscht werden kann. (b/195553816)
  • Das Problem wurde behoben, bei dem das Umbenennen von Dateien während updateData in Nicht-Android-JVM-Umgebungen fehlgeschlagen ist. (b/203087070)
  • Das Problem, bei dem 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 wird ohne Änderungen seit 1.1.0-alpha07 veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

Version 1.1.0-alpha07

29. November 2023

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

API-Änderungen

  • MultiProcessDataStoreFactory-Methoden sind nicht mehr experimentell.Die Anmerkung „@ExperimentalMultiProcessDataStore“ wurde vollständig entfernt. (Ieee54, I8e607)

Fehlerkorrekturen

  • Die Entfernung von @ExperimentalMultiProcessDataStore-Annotationen wird in Version 1.1.0-alpha07 eingeführt. (I8e607)

Version 1.1.0-alpha06

1. November 2023

androidx.datastore:datastore-*:1.1.0-alpha06 ist 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 ist veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Das Problem, dass MultiProcessCoordinator mehrere Dateien im selben Verzeichnis nicht überwachen konnte, wurde behoben.
  • Es wurde ein Fehler behoben, der dazu führte, dass doppelte Dateien nicht erkannt wurden, wenn Dateipfade nicht normalisiert wurden.
  • Falsche Werte korrigieren, die von RxDataStore#isDisposed zurückgegeben werden.
  • Fehlende ProGuard-Konfiguration für das datstore-preferences-core-Artefakt korrigieren.

Version 1.1.0-alpha04

5. April 2023

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

Fehlerkorrekturen

  • Verbessern Sie die interne Implementierung, um eine Race Condition zu vermeiden, bei der der Datenfluss von DataStore nach einem Update möglicherweise einen älteren Wert ausgibt.

Version 1.1.0-alpha03

24. März 2023

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

Fehlerkorrekturen

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

Version 1.1.0-alpha02

22. März 2023

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

Note

Diese Version enthält ein wichtiges internes Refactoring, bei dem die Implementierungen für DataStore mit einem und mehreren Prozessen zusammengeführt werden. Achten Sie auf mögliche unbeabsichtigte Verhaltensänderungen, z.B. beim Timing von Updatebenachrichtigungen. Sie können die Problemverfolgungskomponente verwenden, um solche Änderungen zu melden.

Neue Funktionen

  • Sie können DataStore jetzt in KMM-Projekten verwenden. Nicht auf Android ausgerichtete DataStore-Ziele sind weiterhin experimentell. Wir haben uns jedoch entschieden, Versionen zusammenzuführen, um Entwicklern das Ausprobieren zu erleichtern.
  • Funktionen für mehrere Prozesse werden von androidx.datastore.multiprocess nach androidx.datastore.core verschoben.
  • Fügen Sie in androidx.datastore.core.MultiProcessDataStoreFactory eine neue Factory-Methode hinzu, um DataStore-Instanzen mit Storage-Objekten für Dateivorgänge zu erstellen.
  • Eine neue Schnittstelle InterProcessCoordinator wurde hinzugefügt, die die Kommunikation zwischen mehreren DataStore-Instanzen über Prozesse hinweg ermöglicht. Die Multi-Process-Implementierung von InterProcessCoordinator ist nur auf Android-Geräten verfügbar.

API-Änderungen

  • InterProcessCoordinator zu StorageConnection in der datastore-core-Schnittstelle hinzufügen (I555bb)
  • Ändern Sie APIs in datastore-core MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f)
  • Öffentliche APIs in „datastore-multiprocess“ in „datastore-core“ verschieben (I76d7c)
  • PreferencesSerializer aus datastore-preferences-core verfügbar gemacht (I4b788)
  • Annotation @JvmDefaultWithCompatibility wurde hinzugefügt. (I8f206)

Version 1.1.0-alpha01

9. November 2022

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

Neue Funktionen

  • Unterstützung von Anwendungsfällen mit mehreren Prozessen, bei denen die Datenkonsistenz zwischen DataStore-Instanzen über Prozesse hinweg gewährleistet ist. Fügen Sie MultiProcessDataStoreFactory#create hinzu, um solche DataStore-Instanzen zu erstellen.
  • Neue Speicherschnittstelle, mit der der zugrunde liegende Speichermechanismus für Datastore ausgetauscht werden kann. Implementierungen für java.io und okio sind verfügbar. DataStore-Factories haben neue Methoden, die dieses Storage-Objekt akzeptieren.

API-Änderungen

  • Ändern Sie APIs in datastore-core MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f)
  • Öffentliche APIs in „datastore-multiprocess“ in „datastore-core“ verschieben (I76d7c)
  • PreferencesSerializer aus datastore-preferences-core verfügbar gemacht (I4b788)

Version 1.0.0

Version 1.0.0

4. August 2021

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

Wichtige Funktionen von Version 1.0.0

Jetpack DataStore ist eine Datenspeicherlösung, mit der Sie Schlüssel/Wert-Paare oder typisierte Objekte mit Protocol Buffers speichern können. DataStore verwendet Kotlin-Coroutinen 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 ist veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Stellen Sie klar, dass SharedPreferencesMigration nicht ausgeführt wird, wenn keine Schlüssel vorhanden sind. (Icfa32, b/192824325)
  • Ein Fehler wurde behoben, bei dem für SharedPreferencesMigration, das mit MIGRATE_ALL_KEYS erstellt wurde, eine Ausnahme ausgelöst wurde, 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 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem eine .java-Datei versehentlich in die endgültige JAR-Datei aufgenommen wurde (I65d96, b/188985637).

Version 1.0.0-beta02

16. Juni 2021

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

Fehlerkorrekturen

  • Fehler bei ClassVerificationFailure beheben (b/187450483)

Version 1.0.0-beta01

21. April 2021

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

API-Änderungen

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem Datenspeicher-Delegaten zu Kontextlecks führen konnten (Ie96fc, b/184415662).

Version 1.0.0-alpha08

10. März 2021

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

API-Änderungen

  • Sie können jetzt eine Migration, die vom Kontext abhängt, zu Ihrem dataStore- und preferencesDataStore-Property-Delegate hinzufügen. (I4ef69, b/173726702)
  • Es wurden Hilfsfunktionen hinzugefügt, mit denen der Name der Datei abgerufen werden kann, wenn Sie den Datastore-Delegaten oder context.createDataStore nicht mehr verwenden (I60f9a).
  • Die Serializer-Funktionen „writeTo“ und „readFrom“ werden jetzt angehalten. Wenn Sie einen Serializer implementiert haben, müssen Sie Ihre Funktionen in suspend-Funktionen umwandeln. (I1e58e)
  • Es wurden Property-Delegaten 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 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die Erweiterungsfunktion Context.createDataStore wurde entfernt und durch den globalDataStore-Property-Delegate ersetzt. Rufen Sie „globalDataStore“ einmal auf der obersten Ebene in Ihrer Kotlin-Datei auf. Beispiel:

    val Context.myDataStore by dataStore(...)
    

    Fügen Sie dies auf der obersten Ebene Ihrer Kotlin-Datei ein, damit es nur eine Instanz davon gibt. (I57215, b/173726702)

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

  • Wenn Sie EncryptedSharedPreferences (oder SharedPreferences für den Direktboot) zu DataStore migrieren möchten, können Sie das jetzt mit dem neuen SharedPreferencesMigration-Konstruktor tun, mit dem Sie die SharedPreferences einfügen können. (I8e04e, b/177278510)

Fehlerkorrekturen

  • DataStore löst jetzt eine Ausnahme aus, wenn es mehrere aktive DataStores für dieselbe Datei gibt. Wenn Sie Ihren DataStore nicht als Singleton verwaltet oder nicht dafür gesorgt haben, dass nicht zwei Instanzen von DataStore gleichzeitig für eine Datei aktiv sind, werden möglicherweise Ausnahmen beim Lesen oder Schreiben in DataStore angezeigt. Diese können behoben werden, indem Sie Ihren DataStore als Singleton verwalten. (Ib43f4, b/177691248)
  • Das Verhalten bei der Stornierung wurde korrigiert, wenn der Anruferbereich storniert wird. (I2c7b3)

Version 1.0.0-alpha06

13. Januar 2021

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

Neue Funktionen

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

API-Änderungen

  • Die CorruptionHandler-Schnittstelle ausblenden. Es gab keinen Grund, warum sie öffentlich sein sollte, 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. preferencesKey<Int>("int") ist jetzt beispielsweise intPreferencesKey("int") (Ibcfac, b/170311106).

Fehlerkorrekturen

  • Die Dokumentation zu DataStoreFactory wurde korrigiert. Es wurde bisher nicht erwähnt, dass die Datenspeicherdatei im Unterverzeichnis „datastore/“ erstellt wird. (Ica222)

Version 1.0.0-alpha05

2. Dezember 2020

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

Fehlerkorrekturen

  • Bessere Dokumentation und Ausnahmen für gleichzeitige Schreibvorgänge aus Datenspeichern hinzufügen. (Ia98a2, b/173522155, b/173726702)
  • Der an Serializer.writeTo() übergebene OutputStream kann jetzt geschlossen werden (ist aber nicht erforderlich). (I5c9bf, b/173037611)

Version 1.0.0-alpha04

17. November 2020

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

Fehlerkorrekturen

  • Es wurde ein Verpackungsproblem behoben, das zum folgenden Absturz im Preference Datastore geführt hat: 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Version 1.0.0-alpha03

11. November 2020

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

Neue Funktionen

  • Einstellungen unterstützen jetzt Double-Werte. Das ist nützlich, wenn Sie eine höhere Genauigkeit als bei Floats benötigen. (I5be8f, b/169471808)

API-Änderungen

  • Es wurde eine reine Kotlin-Abhängigkeit für DataStore erstellt, um eine schnellere Kompilierung zu ermöglichen. androidx.datastore:datastore-core enthält die reinen Kotlin-APIs und androidx.datastore:datastore die APIs, die von Android abhängen, einschließlich des Konstruktors SharedPreferencesMigration und Context.createDataStore. (I42d75, b/168512698)
  • Aufteilen von Zielen für den Preferences-Datenspeicher für eine schnellere Kotlin-Kompilierung (Ia3c19)
  • Serialisierer benötigen jetzt eine neue Eigenschaft für den Standardwert, der verwendet wird, wenn keine Daten auf der Festplatte vorhanden sind. Dadurch wird die Implementierung benutzerdefinierter Serialisierungsprogramme vereinfacht, da Nutzer keine Sonderbehandlung für leere Eingabestreams vornehmen müssen (leere Eingabestreams werden nicht mit JSON geparst).

    • Außerdem wird jetzt geprüft, ob der Ausgabestream, der für writeTo() bereitgestellt wird, nicht geschlossen ist. Wenn er geschlossen ist, werden Ausnahmen ausgegeben (I16e29).
  • Making the constructor for SharedPreferencesView internal. Sie war ursprünglich öffentlich, um Tests zu ermöglichen. Stattdessen sollte ein SharedPreferencesMigration-Objekt erstellt und damit getestet werden. (I93891)

Fehlerkorrekturen

  • Der Parameter produceFile für DataStoreFactory und PreferenceDataStoreFactory ist jetzt der letzte Parameter in der Liste. So können Sie die Kotlin-Syntax für nachgestellte Lambdas verwenden. (Ibe7f1, b/169425442)
  • Gemäß den neuen expliziten API-Anforderungen für Kotlin (I5ae1e)

Bekannte Probleme

  • Der Preference Datastore 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 sind veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Sicherheitsmaßnahme gegen Mutationen in „datastore-core“ hinzugefügt. Durch die Mutation wird die Datenspeichernutzung für Nutzer, die den Datenspeicher mit Nicht-Proto-/Nicht-Einstellungen-Typen verwenden, unterbrochen (I6aa84).
  • Die Methode toString wurde zu Preferences.kt hinzugefügt, um den aktuellen Status einfacher debuggen zu können (I96006).
  • Es wurde eine Ausnahme hinzugefügt, um Missbrauch von DataStore.Preferences (I1134d) zu verhindern.
  • Ein Fehler wurde behoben, der dazu führte, dass 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 sind 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 basiert auf Kotlin-Coroutinen und Flow und bietet zwei verschiedene Implementierungen:

  • Proto DataStore, mit dem Sie typisierte Objekte (basierend auf Protokollpuffern) speichern können
  • Preferences DataStore, in dem Schlüssel/Wert-Paare gespeichert werden

Daten werden asynchron, konsistent und transaktional gespeichert, wodurch die meisten Nachteile von SharedPreferences vermieden werden.