DataStore

Memorizza i dati in modo asincrono, coerente e transazionale, superando alcuni degli svantaggi di SharedPreferences
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
22 ottobre 2025 1.1.7 - 1.2.0-beta01 -

Dichiara le dipendenze

Per aggiungere una dipendenza da DataStore, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Esistono due implementazioni di DataStore: Preferenze e Proto. Scegli una delle due opzioni. Puoi anche aggiungere dipendenze senza Android a una delle due implementazioni.

Aggiungi le dipendenze per l'implementazione necessaria nel file build.gradle per la tua app o il tuo modulo:

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

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.2

Versione 1.2.0-beta01

22 ottobre 2025

androidx.datastore:datastore-*:1.2.0-beta01 è stato rilasciato. La versione 1.2.0-beta01 contiene questi commit.

Modifiche alle API

Correzioni di bug

  • Correzione di java.lang.UnsatisfiedLinkError quando si utilizza DataStore in un'app ottimizzata con R8, ma che non utilizza getDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293)
  • È stato risolto un problema per cui le operazioni GuavaDataStore potevano essere eseguite in modo errato sul thread chiamante (ad esempio, il thread principale) anziché sul dispatcher I/O specificato. (Ic91ea,b/441801112)

Versione 1.2.0-alpha02

7 maggio 2025

androidx.datastore:datastore-*:1.2.0-alpha02 è stato rilasciato. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stato aggiunto il supporto multiprocesso in GuavaDataStore. (e0d608a).
  • È stato aggiunto un metodo helper per creare un GuavaDataStore da un DataStore. (9af26f4)
  • I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati. (Idb6b5)
  • Sostituisci l'overload datastore esistente con un metodo delegato per inizializzare un DataStore da utilizzare durante l'avvio diretto. (If71b9)

Versione 1.2.0-alpha01

26 marzo 2025

androidx.datastore:datastore-*:1.2.0-alpha01 è stato rilasciato. La versione 1.2.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il modulo datastore-guava per esporre API compatibili con gli utenti di Java e Guava ListenableFuture tramite GuavaDataStore. (Iadd5e0)
  • L'utilizzo di DataStore durante la modalità DirectBoot è ora supportato. Per creare un datastore da utilizzare durante la modalità di avvio diretto, è necessario crearlo all'interno dello spazio di archiviazione protetto dal dispositivo. Ciò può essere ottenuto con le seguenti nuove API DataStore: createInDeviceProtectedStorage() in DataStoreFactory e deviceProtectedDataStore() in DataStoreDelegate. (Ib90e56)

Modifiche alle API

  • È stato aggiunto PreferencesFileSerializer che implementa l'interfaccia androidx.datastore.core.Serializer per l'utilizzo con FileStorage. (I4c71f3)

Correzioni di bug

  • Risolto il problema FileNotFoundException in OkioStorage all'avvio aggiungendo un secondo tentativo di lettura dei dati in caso di race condition. (I43b3fb, b/337870543)
  • È stato definito il costruttore predefinito per ReplaceFileCorruptionHandler per l'utilizzo di codice comune. (I795b05, b/358138957)

Versione 1.1

Versione 1.1.7

20 maggio 2025

androidx.datastore:datastore-*:1.1.7 è stato rilasciato. La versione 1.1.7 contiene questi commit.

Correzioni di bug

  • È stato risolto il problema relativo alle regole Proguard mancanti nell'artefatto Android di datastore-preferences-core. (3f3f6e, b/413078297)

Versione 1.1.6

7 maggio 2025

androidx.datastore:datastore-*:1.1.6 è stato rilasciato. La versione 1.1.6 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema a causa del quale i metadati di Gradle erano danneggiati nella versione 1.1.5. Questo problema è stato causato da un bug nel nuovo plug-in AGP KMP DSL che impedisce l'inclusione automatica dei metadati per tutte le piattaforme di destinazione. Il bug fa sì che alcuni metodi DataStore Android non siano più visibili nelle build dei client. La correzione prevede l'utilizzo del DSL android precedente in build.gradle anziché androidLibrary. (7801abf)

Versione 1.1.5

23 aprile 2025

androidx.datastore:datastore-*:1.1.5 è stato rilasciato. La versione 1.1.5 contiene questi commit.

Correzioni di bug

  • Per mitigare i problemi di CorruptionException in PreferencesDataStore, l'archiviazione predefinita è stata modificata da OkioStorage a FileStorage. Questa modifica è stata implementata introducendo un PreferencesFileSerializer. b/346197747

Versione 1.1.4

26 marzo 2025

androidx.datastore:datastore-*:1.1.4 è stato rilasciato. La versione 1.1.4 contiene questi commit.

Correzioni di bug

  • Sostituisci l'archivio predefinito da OkioStorage a FileStorage per migliorare l'affidabilità riducendo CorruptionException. (I71181, b/346197747)

Versione 1.1.3

26 febbraio 2025

androidx.datastore:datastore-*:1.1.3 è stato rilasciato. La versione 1.1.3 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema di FileNotFoundException in OkioStorage riscontrato all'avvio dell'app. Se il tentativo iniziale di lettura del file non va a buon fine, verrà effettuato un secondo tentativo nel caso in cui si sia verificata una condizione di competizione dovuta alla creazione del file da parte di un processo diverso durante la lettura iniziale. (I43b3f, b/337870543)

Versione 1.1.2

15 gennaio 2025

androidx.datastore:datastore-*:1.1.2 è stato rilasciato. La versione 1.1.2 contiene questi commit.

Correzioni di bug

  • Migliora la latenza di lettura a caldo (DataStore.data.first()) di 8 volte. (22b8a40)
  • ReplaceFileCorruptionHandler può essere creato dal codice comune KMP. (7632e839)

Versione 1.1.1

1° maggio 2024

androidx.datastore:datastore-*:1.1.1 è stato rilasciato. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • È stato mitigato il falso allarme Linux relativo all'errore "Si verificherebbe un deadlock delle risorse" in un caso limite in cui più istanze di DataStore tentano di scrivere da processi diversi eseguendo il backoff del blocco file.

Versione 1.1.0

17 aprile 2024

androidx.datastore:datastore-*:1.1.0 è stato rilasciato. La versione 1.1.0 contiene questi commit.

Modifiche principali dalla release 1.0.0

Per ulteriori informazioni, consulta le note di rilascio delle versioni alpha e beta di 1.1.0. Alcuni dei principali aggiornamenti della versione 1.1.0 sono:

  • DataStore ora supporta più processi che accedono allo stesso file, con supporto per l'osservabilità tra i processi.
  • La nuova interfaccia Storage ti consente di personalizzare la modalità di archiviazione o serializzazione dei modelli di dati.
  • Ora puoi utilizzare DataStore nei progetti Kotlin Multiplatform.

Versione 1.1.0-rc01

3 aprile 2024

androidx.datastore:datastore-*:1.1.0-rc01 è stato rilasciato. La versione 1.1.0-rc01 contiene questi commit.

Correzioni di bug

  • È stato corretto il peggioramento delle prestazioni in cui le chiamate updateData non venivano ottimizzate per le scritture su disco se i nuovi dati sono uguali a quelli precedenti (d64cfb5)
  • È stata corretta una condizione di competizione in cui MultiProcess DataStore potrebbe perdere le invalidazioni durante l'inizializzazione. ((b/326141553),(094c2dd))

Versione 1.1.0-beta02

6 marzo 2024

androidx.datastore:datastore-*:1.1.0-beta02 è stato rilasciato. La versione 1.1.0-beta02 contiene questi commit.

Correzioni di bug

  • Il miglioramento del rendimento su DataStore raccoglie le notifiche di aggiornamento solo quando vengono osservate. (b/267792241)
    • Tieni presente che questa modifica potrebbe attivare UncompletedCoroutinesError nei test se utilizzi la libreria di test Coroutines. Per evitare questo problema, assicurati di superare il TestScope.backgroundScope durante l'inizializzazione di DataStore nei test.
  • ​È stato risolto il problema di deadlock delle chiamate updateData nidificate sulla stessa istanza. (b/241760537)
  • DataStore non genera più IOExceptions se non riesce a eliminare SharedPreferences durante la migrazione. (b/195553816)
  • È stato risolto il problema per cui il cambio di nome del file non riesce durante updateData in ambienti JVM non Android. (b/203087070)
  • È stato risolto il problema per cui CorruptionException non viene gestito dopo l'inizializzazione di DataStore. (b/289582516)

Versione 1.1.0-beta01

10 gennaio 2024

androidx.datastore:datastore-*:1.1.0-beta01 viene rilasciato senza modifiche dal giorno 1.1.0-alpha07. La versione 1.1.0-beta01 contiene questi commit.

Versione 1.1.0-alpha07

29 novembre 2023

androidx.datastore:datastore-*:1.1.0-alpha07 è stato rilasciato. La versione 1.1.0-alpha07 contiene questi commit.

Modifiche alle API

  • I metodi MultiProcessDataStoreFactory non sono più sperimentali.L'annotazione @ExperimentalMultiProcessDataStore è stata rimossa completamente. (Ieee54, I8e607)

Correzioni di bug

  • Implementa la rimozione delle annotazioni @ExperimentalMultiProcessDataStore nella versione 1.1.0-alpha07. (I8e607)

Versione 1.1.0-alpha06

1° novembre 2023

androidx.datastore:datastore-*:1.1.0-alpha06 è stato rilasciato. La versione 1.1.0-alpha06 contiene questi commit.

Modifiche alle API

  • Il metodo di fabbrica createSingleProcessCoordinator ora riceve un percorso del file (String, java.io.File e okio.Path) per essere coerente con createMultiProcessCoordinator. (I211c8, b/305755935)

Versione 1.1.0-alpha05

6 settembre 2023

androidx.datastore:datastore-*:1.1.0-alpha05 è stato rilasciato. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche alle API

  • Datastore FileStorage è ora disponibile pubblicamente, quindi i clienti possono fornire parametri personalizzati. (Icb985)
  • È stato modificato il costruttore OkioStorage in modo che accetti un InterProcessCoordinator e possa essere utilizzato su Android con MultiProcessCoordinator. (Iecea3)

Correzioni di bug

  • Correzione di MultiProcessCoordinator che non consente di monitorare più file nella stessa directory.
  • Correzione dell'impossibilità di rilevare i file duplicati se i percorsi dei file non sono normalizzati.
  • Correggi i valori errati restituiti da RxDataStore#isDisposed.
  • Correggi la configurazione Proguard mancante per l'artefatto datstore-preferences-core.

Versione 1.1.0-alpha04

5 aprile 2023

androidx.datastore:datastore-*:1.1.0-alpha04 è stato rilasciato. La versione 1.1.0-alpha04 contiene questi commit.

Correzioni di bug

  • Migliora l'implementazione interna per evitare una race condition in cui il flusso di dati di DataStore potrebbe emettere un valore precedente dopo un aggiornamento.

Versione 1.1.0-alpha03

24 marzo 2023

androidx.datastore:datastore-*:1.1.0-alpha03 è stato rilasciato.

Correzioni di bug

  • Sono stati rimossi i vincoli di dipendenza dagli artefatti Maven per risolvere un problema di build in Kotlin Native Targets (b/274786186, KT-57531).

Versione 1.1.0-alpha02

22 marzo 2023

androidx.datastore:datastore-*:1.1.0-alpha02 è stato rilasciato. La versione 1.1.0-alpha02 contiene questi commit.

Note

Tieni presente che questa versione include un importante refactoring interno che unisce le implementazioni per le implementazioni DataStore a processo singolo e multi-processo. Tieni d'occhio eventuali modifiche impreviste del comportamento (ad es. tempistiche delle notifiche di aggiornamento). Puoi utilizzare il componente Issue Tracker per segnalare queste modifiche.

Nuove funzionalità

  • Ora puoi utilizzare DataStore nei progetti KMM. Tieni presente che le destinazioni non Android di DataStore sono ancora sperimentali, ma abbiamo deciso di unire le versioni per semplificare la prova da parte degli sviluppatori.
  • Le funzionalità multi-processo vengono spostate da androidx.datastore.multiprocess a androidx.datastore.core.
  • Aggiungi un nuovo metodo di fabbrica in androidx.datastore.core.MultiProcessDataStoreFactory per creare istanze DataStore con oggetti Storage per le operazioni sui file.
  • Aggiungi una nuova interfaccia InterProcessCoordinator che aiuti più istanze DataStore a comunicare tra i processi. Tieni presente che l'implementazione multiprocesso di InterProcessCoordinator è disponibile solo su Android.

Modifiche alle API

  • Aggiungi InterProcessCoordinator a StorageConnection nell'interfaccia datastore-core (I555bb)
  • Modifica le API in datastore-core MultiProcessDataStoreFactory per utilizzare Storage. (Iac02f)
  • Sposta le API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
  • PreferencesSerializer esposto da datastore-preferences-core (I4b788)
  • Aggiunta dell'annotazione @JvmDefaultWithCompatibility (I8f206)

Versione 1.1.0-alpha01

9 novembre 2022

androidx.datastore:datastore-*:1.1.0-alpha01 è stato rilasciato. La versione 1.1.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Supporta casi d'uso multi-processo in cui la coerenza dei dati è garantita tra le istanze DataStore nei processi. Aggiungi MultiProcessDataStoreFactory#create per creare istanze DataStore.
  • Nuova interfaccia di archiviazione che consente di sostituire il meccanismo di archiviazione sottostante per Datastore. Vengono fornite implementazioni per java.io e okio. Le fabbriche DataStore hanno nuovi metodi che accettano questo oggetto Storage.

Modifiche alle API

  • Modifica le API in datastore-core MultiProcessDataStoreFactory per utilizzare Storage. (Iac02f)
  • Sposta le API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
  • PreferencesSerializer esposto da datastore-preferences-core (I4b788)

Versione 1.0.0

Versione 1.0.0

4 agosto 2021

androidx.datastore:datastore-*:1.0.0 è stato rilasciato. La versione 1.0.0 contiene questi commit.

Funzionalità principali della versione 1.0.0

Jetpack DataStore è una soluzione di archiviazione dei dati che consente di memorizzare coppie chiave-valore o oggetti digitati con protocol buffer. DataStore utilizza le coroutine e Flow di Kotlin per archiviare i dati in modo asincrono, coerente e transazionale.

Versione 1.0.0-rc02

21 luglio 2021

androidx.datastore:datastore-*:1.0.0-rc02 è stato rilasciato. La versione 1.0.0-rc02 contiene questi commit.

Correzioni di bug

  • Chiariamo che SharedPreferencesMigration non viene eseguito se non sono presenti chiavi. (Icfa32, b/192824325)
  • È stato corretto un bug per cui SharedPreferencesMigration creato con MIGRATE_ALL_KEYS generava un'eccezione se la chiave richiesta non esisteva ancora. (Ie318a, b/192824325)

Versione 1.0.0-rc01

30 giugno 2021

androidx.datastore:datastore-*:1.0.0-rc01 è stato rilasciato. La versione 1.0.0-rc01 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug per cui il file .java veniva aggiunto inavvertitamente al file JAR finale (I65d96, b/188985637)

Versione 1.0.0-beta02

16 giugno 2021

androidx.datastore:datastore-*:1.0.0-beta02 è stato rilasciato. La versione 1.0.0-beta02 contiene questi commit.

Correzioni di bug

Versione 1.0.0-beta01

21 aprile 2021

androidx.datastore:datastore-*:1.0.0-beta01 è stato rilasciato. La versione 1.0.0-beta01 contiene questi commit.

Modifiche alle API

  • Rimuovi sovraccarichi JVM per metodi solo Kotlin (I2adc7)

Correzioni di bug

  • È stato corretto un bug per cui i delegati del datastore potevano causare la perdita di contesti (Ie96fc, b/184415662)

Versione 1.0.0-alpha08

10 marzo 2021

androidx.datastore:datastore-*:1.0.0-alpha08 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.

Modifiche alle API

  • Ora puoi aggiungere una migrazione che dipende dal contesto al delegato della proprietà dataStore e preferencesDataStore. (I4ef69, b/173726702)
  • Aggiunge funzioni helper per ottenere il nome del file se non utilizzi più il delegato o context.createDataStore (I60f9a)
  • Serializer writeTo e readFrom ora sono sospesi. Se hai implementato un serializzatore, dovrai aggiornare le funzioni in modo che siano funzioni di sospensione. (I1e58e)
  • Sono stati aggiunti delegati della proprietà per gli utenti di RxDataStore. (Ied768, b/173726702)

Correzioni di bug

  • Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)

Versione 1.0.0-alpha07

24 febbraio 2021

androidx.datastore:datastore-*:1.0.0-alpha07 è stato rilasciato. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche alle API

  • La funzione di estensione Context.createDataStore è stata rimossa e sostituita con il delegato della proprietà globalDataStore. Chiama globalDataStore una volta a livello principale nel file Kotlin. Ad esempio:

    val Context.myDataStore by dataStore(...)
    

    Inserisci questo codice nel livello superiore del file Kotlin in modo che esista una sola istanza. (I57215, b/173726702)

  • Le funzioni RxDataStore ora si trovano in una classe RxDataStore anziché in funzioni di estensione su DataStore. (Idccdb, b/177691248)

  • Se vuoi eseguire la migrazione di EncryptedSharedPreferences (o SharedPreferences di avvio diretto) a DataStore, ora puoi farlo con il nuovo costruttore SharedPreferencesMigration che ti consente di inserire SharedPreferences. (I8e04e, b/177278510)

Correzioni di bug

  • DataStore ora genererà un'eccezione se sono presenti più DataStore attivi per lo stesso file. Se non gestivi DataStore come Singleton o non ti assicuravi che non fossero attive contemporaneamente due istanze di DataStore per un file, ora potresti visualizzare eccezioni durante la lettura o la scrittura in DataStore. Questi problemi possono essere risolti gestendo DataStore come Singleton. (Ib43f4, b/177691248)
  • Correggi il comportamento di annullamento quando l'ambito del chiamante viene annullato. (I2c7b3)

Versione 1.0.0-alpha06

13 gennaio 2021

androidx.datastore:datastore-*:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.

Nuove funzionalità

  • Sono stati aggiunti wrapper RxJava per DataStore. Gli artefatti datastore-rxjava2/3 contengono i wrapper per le API DataStore principali (RxDataStore, RxDataStoreBuilder e RxDataMigration). Gli artefatti datastore-preferences-rxjava2/3 contengono un builder per creare un DataStore delle preferenze.

Modifiche alle API

  • Nascondi l'interfaccia CorruptionHandler. Non c'era motivo per renderlo pubblico perché la factory DataStore accetta solo un ReplaceFileCorruptionHandler. (I0b3b3, b/176032264)
  • Il metodo preferencesKey<T>(name: String): Key<T> è stato rimosso e sostituito con metodi specifici per ogni tipo supportato. Ad esempio, preferencesKey<Int>("int") ora è intPreferencesKey("int") (Ibcfac, b/170311106)

Correzioni di bug

  • Corregge la documentazione su DataStoreFactory, che non menzionava il fatto che il file del datastore viene creato nella sottodirectory "datastore/". (Ica222)

Versione 1.0.0-alpha05

2 dicembre 2020

androidx.datastore:datastore-*:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.

Correzioni di bug

  • Aggiungi una documentazione e delle eccezioni migliori per le scritture simultanee dai datastore. (Ia98a2, b/173522155, b/173726702)
  • Ora consentiamo (ma non richiediamo) la chiusura di OutputStream passato a Serializer.writeTo(). (I5c9bf, b/173037611)

Versione 1.0.0-alpha04

17 novembre 2020

androidx.datastore:datastore-*:1.0.0-alpha04 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema di packaging che causa il seguente arresto anomalo in Preference Datastore 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Versione 1.0.0-alpha03

11 novembre 2020

androidx.datastore:datastore-*:1.0.0-alpha03 è stato rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Le preferenze ora supportano i valori doppi (utili se hai bisogno di una precisione maggiore rispetto ai valori float) (I5be8f, b/169471808)

Modifiche alle API

  • È stata creata una dipendenza Kotlin pura per Datastore per consentire una compilazione più rapida. androidx.datastore:datastore-core contiene solo le API Kotlin di base e androidx.datastore:datastore contiene le API che dipendono da Android (inclusi SharedPreferencesMigration e il costruttore Context.createDataStore). (I42d75, b/168512698)
  • Divisione dei target per l'archivio dati delle preferenze per una compilazione Kotlin più rapida (Ia3c19)
  • I serializzatori ora richiedono una nuova proprietà per il valore predefinito che verrà utilizzato se non sono presenti dati sul disco. Ciò semplifica l'implementazione di serializzatori personalizzati, in modo che gli utenti non debbano gestire in modo speciale i flussi di input vuoti (i flussi di input vuoti non vengono analizzati con JSON).

    • Inoltre, ora viene eseguito un controllo per verificare che lo stream di output fornito a writeTo() non sia chiuso e, se è chiuso, vengono generate eccezioni (I16e29).
  • Rendere interno il costruttore di SharedPreferencesView. Inizialmente era pubblico per consentire i test. I test devono invece creare una SharedPreferencesMigration e testarla. (I93891)

Correzioni di bug

  • Il parametro produceFile su DataStoreFactory e PreferenceDataStoreFactory ora è l'ultimo parametro dell'elenco, quindi ti consente di utilizzare la sintassi lambda finale di Kotlin. (Ibe7f1, b/169425442)
  • In seguito ai nuovi requisiti espliciti delle API per Kotlin (I5ae1e)

Problemi noti

  • Preference Datastore si arresta in modo anomalo con java.lang.NoClassDefFoundError. (b/173036843)

Versione 1.0.0-alpha02

14 ottobre 2020

androidx.datastore:datastore-core:1.0.0-alpha02 e androidx.datastore:datastore-preferences:1.0.0-alpha02 sono stati rilasciati. La versione 1.0.0-alpha02 contiene questi commit.

Correzioni di bug

  • È stata aggiunta una protezione contro la mutazione in datastore-core. La mutazione interrompe l'utilizzo del datastore per le persone che lo utilizzano con tipi non proto/non preferenze (I6aa84)
  • È stato aggiunto un metodo toString a Preferences.kt per semplificare il debug dello stato attuale (I96006)
  • È stata aggiunta un'eccezione per proteggere dall'uso improprio di DataStore.Preferences (I1134d)
  • È stato corretto un bug che causava l'arresto anomalo dell'app all'avvio (I69237, b/168580258)

Versione 1.0.0-alpha01

2 settembre 2020

androidx.datastore:datastore-core:1.0.0-alpha01 e androidx.datastore:datastore-preferences:1.0.0-alpha01 sono stati rilasciati. La versione 1.0.0-alpha01 contiene questi commit.

Nuove funzionalità

Jetpack DataStore è una nuova e migliorata soluzione di archiviazione dei dati che mira a sostituire SharedPreferences. Basato su coroutine e Flow di Kotlin, DataStore fornisce due implementazioni diverse:

  • Proto DataStore, che consente di archiviare oggetti tipizzati (supportati da protocol buffer)
  • Preferences DataStore, che memorizza coppie chiave-valore

I dati vengono archiviati in modo asincrono, coerente e transazionale, superando la maggior parte degli svantaggi di SharedPreferences.