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.FunctioninGuavaDataStore. (I71eae, b/448563999) - Aggiungi un overload per
GuavaDataStore.fromche accetta un Executor anziché unCoroutineContext. (I989fa, b/448563183)
Correzioni di bug
- Correzione di
java.lang.UnsatisfiedLinkErrorquando si utilizzaDataStorein un'app ottimizzata con R8, ma che non utilizzagetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293) - È stato risolto un problema per cui le operazioni
GuavaDataStorepotevano 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
GuavaDataStoreda unDataStore. (9af26f4) - I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati. (Idb6b5)
- Sostituisci l'overload
datastoreesistente 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-guavaper esporre API compatibili con gli utenti di Java e GuavaListenableFuturetramiteGuavaDataStore. (Iadd5e0) - L'utilizzo di
DataStoredurante 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()inDataStoreFactoryedeviceProtectedDataStore()inDataStoreDelegate. (Ib90e56)
Modifiche alle API
- È stato aggiunto
PreferencesFileSerializerche implementa l'interfacciaandroidx.datastore.core.Serializerper l'utilizzo conFileStorage. (I4c71f3)
Correzioni di bug
- Risolto il problema
FileNotFoundExceptioninOkioStorageall'avvio aggiungendo un secondo tentativo di lettura dei dati in caso di race condition. (I43b3fb, b/337870543) - È stato definito il costruttore predefinito per
ReplaceFileCorruptionHandlerper 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 DSLandroidprecedente inbuild.gradleanziché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
CorruptionExceptioninPreferencesDataStore, l'archiviazione predefinita è stata modificata daOkioStorageaFileStorage. 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
OkioStorageaFileStorageper 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
FileNotFoundExceptioninOkioStorageriscontrato 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) ReplaceFileCorruptionHandlerpuò 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
DataStoretentano 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
updateDatanon 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
MultiProcessDataStorepotrebbe 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
DataStoreraccoglie le notifiche di aggiornamento solo quando vengono osservate. (b/267792241)- Tieni presente che questa modifica potrebbe attivare
UncompletedCoroutinesErrornei test se utilizzi la libreria di test Coroutines. Per evitare questo problema, assicurati di superare ilTestScope.backgroundScopedurante l'inizializzazione diDataStorenei test.
- Tieni presente che questa modifica potrebbe attivare
- È stato risolto il problema di deadlock delle chiamate
updateDatanidificate sulla stessa istanza. (b/241760537) DataStorenon genera piùIOExceptionsse non riesce a eliminareSharedPreferencesdurante la migrazione. (b/195553816)- È stato risolto il problema per cui il cambio di nome del file non riesce durante
updateDatain ambienti JVM non Android. (b/203087070) - È stato risolto il problema per cui
CorruptionExceptionnon 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
MultiProcessDataStoreFactorynon sono più sperimentali.L'annotazione@ExperimentalMultiProcessDataStoreè stata rimossa completamente. (Ieee54, I8e607)
Correzioni di bug
- Implementa la rimozione delle annotazioni
@ExperimentalMultiProcessDataStorenella 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
createSingleProcessCoordinatorora riceve un percorso del file (String,java.io.Fileeokio.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
OkioStoragein modo che accetti unInterProcessCoordinatore possa essere utilizzato su Android conMultiProcessCoordinator. (Iecea3)
Correzioni di bug
- Correzione di
MultiProcessCoordinatorche 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
DataStorepotrebbe 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
DataStorenei 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.multiprocessaandroidx.datastore.core. - Aggiungi un nuovo metodo di fabbrica in
androidx.datastore.core.MultiProcessDataStoreFactoryper creare istanze DataStore con oggettiStorageper le operazioni sui file. - Aggiungi una nuova interfaccia
InterProcessCoordinatorche aiuti più istanze DataStore a comunicare tra i processi. Tieni presente che l'implementazione multiprocesso diInterProcessCoordinatorè disponibile solo su Android.
Modifiche alle API
- Aggiungi
InterProcessCoordinatoraStorageConnectionnell'interfaccia datastore-core (I555bb) - Modifica le API in datastore-core
MultiProcessDataStoreFactoryper utilizzare Storage. (Iac02f) - Sposta le API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
PreferencesSerializeresposto 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
DataStorenei processi. AggiungiMultiProcessDataStoreFactory#createper 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 fabbricheDataStorehanno nuovi metodi che accettano questo oggetto Storage.
Modifiche alle API
- Modifica le API in datastore-core
MultiProcessDataStoreFactoryper utilizzare Storage. (Iac02f) - Sposta le API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
PreferencesSerializeresposto 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
SharedPreferencesMigrationnon viene eseguito se non sono presenti chiavi. (Icfa32, b/192824325) - È stato corretto un bug per cui
SharedPreferencesMigrationcreato conMIGRATE_ALL_KEYSgenerava 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à
dataStoreepreferencesDataStore. (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/3contengono i wrapper per le API DataStore principali (RxDataStore,RxDataStoreBuildereRxDataMigration). Gli artefattidatastore-preferences-rxjava2/3contengono 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-corecontiene solo le API Kotlin di base eandroidx.datastore:datastorecontiene le API che dipendono da Android (inclusiSharedPreferencesMigratione 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
produceFilesuDataStoreFactoryePreferenceDataStoreFactoryora è 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
toStringa 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.