DataStore
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.
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
- Rendi pubblico
CorruptionHandler
. (I9ac35, b/452406457) - Usa
androidx.core.util.Function
inGuavaDataStore
. (I71eae, b/448563999) - Aggiungi un overload per
GuavaDataStore.from
che accetta un Executor anziché unCoroutineContext
. (I989fa, b/448563183)
Correzioni di bug
- Correzione di
java.lang.UnsatisfiedLinkError
quando si utilizzaDataStore
in un'app ottimizzata con R8, ma che non utilizzagetDefaultProguardFile('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 unDataStore
. (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 GuavaListenableFuture
tramiteGuavaDataStore
. (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 APIDataStore
:createInDeviceProtectedStorage()
inDataStoreFactory
edeviceProtectedDataStore()
inDataStoreDelegate
. (Ib90e56)
Modifiche alle API
- È stato aggiunto
PreferencesFileSerializer
che implementa l'interfacciaandroidx.datastore.core.Serializer
per l'utilizzo conFileStorage
. (I4c71f3)
Correzioni di bug
- Risolto il problema
FileNotFoundException
inOkioStorage
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 DSLandroid
precedente inbuild.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
inPreferencesDataStore
, l'archiviazione predefinita è stata modificata daOkioStorage
aFileStorage
. Questa modifica è stata implementata introducendo unPreferencesFileSerializer
. 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
aFileStorage
per migliorare l'affidabilità riducendoCorruptionException
. (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
inOkioStorage
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 ilTestScope.backgroundScope
durante l'inizializzazione diDataStore
nei test.
- Tieni presente che questa modifica potrebbe attivare
- È stato risolto il problema di deadlock delle chiamate
updateData
nidificate sulla stessa istanza. (b/241760537) DataStore
non genera piùIOExceptions
se non riesce a eliminareSharedPreferences
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 diDataStore
. (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
eokio.Path
) per essere coerente concreateMultiProcessCoordinator
. (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 unInterProcessCoordinator
e possa essere utilizzato su Android conMultiProcessCoordinator
. (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
aandroidx.datastore.core
. - Aggiungi un nuovo metodo di fabbrica in
androidx.datastore.core.MultiProcessDataStoreFactory
per creare istanze DataStore con oggettiStorage
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 diInterProcessCoordinator
è disponibile solo su Android.
Modifiche alle API
- Aggiungi
InterProcessCoordinator
aStorageConnection
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. AggiungiMultiProcessDataStoreFactory#create
per creare istanzeDataStore
. - Nuova interfaccia di archiviazione che consente di sostituire il meccanismo di archiviazione sottostante per
Datastore
. Vengono fornite implementazioni per java.io e okio. Le fabbricheDataStore
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 conMIGRATE_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
- Correzione di
ClassVerificationFailure
(b/187450483)
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
epreferencesDataStore
. (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
eRxDataMigration
). Gli artefattidatastore-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
- L'arresto anomalo è stato originariamente segnalato qui: b/173036843
- (I4712d, b/173036843)
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 eandroidx.datastore:datastore
contiene le API che dipendono da Android (inclusiSharedPreferencesMigration
e il costruttoreContext.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
suDataStoreFactory
ePreferenceDataStoreFactory
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.