DataStore
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja Alfa |
|---|---|---|---|---|
| 22 października 2025 r. | 1.1.7 | - | 1.2.0-beta01 | - |
Deklarowanie zależności
Aby dodać zależność od DataStore, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven Google.
Istnieją 2 implementacje DataStore: Preferences i Proto. Wybierz jedną z tych opcji. Możesz też dodać zależności niezwiązane z Androidem do dowolnej implementacji.
Dodaj zależności dla potrzebnej implementacji w pliku build.gradle aplikacji lub modułu:
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") }
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.2
Wersja 1.2.0-beta01
22 października 2025 r.
Publikacja androidx.datastore:datastore-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Ustaw
CorruptionHandlerjako publiczną. (I9ac35, b/452406457) - Używaj konta
androidx.core.util.Functionw aplikacjiGuavaDataStore. (I71eae, b/448563999) - Dodaj przeciążenie dla funkcji
GuavaDataStore.from, które przyjmuje obiekt Executor zamiast obiektuCoroutineContext. (I989fa, b/448563183)
Poprawki błędów
- Naprawiono
java.lang.UnsatisfiedLinkErrorpodczas używaniaDataStorew aplikacji zoptymalizowanej za pomocą R8, ale nieużywającejgetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293) - Rozwiązanie problemu polegającego na tym, że operacje
GuavaDataStoremogły być nieprawidłowo wykonywane w wątku wywołującym (np. w wątku głównym) zamiast w określonym dyspozytorze wejścia-wyjścia. (Ic91ea,b/441801112)
Wersja 1.2.0-alpha02
7 maja 2025 r.
Publikacja androidx.datastore:datastore-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano obsługę wielu procesów w
GuavaDataStore. (e0d608a). - Dodano metodę pomocniczą do tworzenia obiektu
GuavaDataStorez obiektuDataStore. (9af26f4) - Projekty wydane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
- Zastąp istniejące przeciążenie
datastoremetodą delegowania, aby zainicjować DataStore do użycia podczas bezpośredniego uruchamiania. (If71b9)
Wersja 1.2.0-alpha01
26 marca 2025 r.
Publikacja androidx.datastore:datastore-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Dodano moduł
datastore-guava, aby udostępniać interfejsy API przyjazne dla użytkowników języka Java i biblioteki GuavaListenableFutureza pomocąGuavaDataStore. (Iadd5e0) - Korzystanie z
DataStorew trybieDirectBootjest teraz obsługiwane. Aby utworzyć magazyn danych, który będzie używany w trybie bezpośredniego uruchamiania, musisz go utworzyć w pamięci chronionej urządzenia. Możesz to zrobić za pomocą tych nowych interfejsów APIDataStore:createInDeviceProtectedStorage()wDataStoreFactoryideviceProtectedDataStore()wDataStoreDelegate. (Ib90e56)
Zmiany w interfejsie API
- Dodaliśmy
PreferencesFileSerializer, który implementuje interfejsandroidx.datastore.core.Serializerdo użycia zFileStorage. (I4c71f3)
Poprawki błędów
- Rozwiązano problem
FileNotFoundExceptionwOkioStoragepodczas uruchamiania przez dodanie drugiej próby odczytu danych w przypadku wyścigu. (I43b3fb, b/337870543) - Zdefiniowano domyślny konstruktor dla
ReplaceFileCorruptionHandlerna potrzeby wspólnego użycia kodu. (I795b05, b/358138957)
Wersja 1.1
Wersja 1.1.7
20 maja 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.7 Wersja 1.1.7 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu z brakującymi regułami Proguard w artefakcie Androida
datastore-preferences-core. (3f3f6e, b/413078297)
Wersja 1.1.6
7 maja 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.6 Wersja 1.1.6 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że metadane Gradle były uszkodzone w wersji
1.1.5. Ten problem był spowodowany błędem w nowym wtyczce AGP KMP DSL, który uniemożliwiał automatyczne uwzględnianie metadanych wszystkich platform docelowych. Błąd powoduje, że niektóre metody DataStore Androida nie są już widoczne w kompilacjach klientów. Rozwiązanie polega na użyciu starszego języka DSLandroidwbuild.gradlezamiastandroidLibrary. (7801abf)
Wersja 1.1.5
23 kwietnia 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.5 Wersja 1.1.5 zawiera te zmiany.
Poprawki błędów
- Aby rozwiązać problemy z
CorruptionExceptionwPreferencesDataStore, domyślne miejsce na dane zostało zmienione zOkioStoragenaFileStorage. Ta zmiana została wprowadzona przez dodaniePreferencesFileSerializer. b/346197747
Wersja 1.1.4
26 marca 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.4 Wersja 1.1.4 zawiera te zmiany.
Poprawki błędów
- Zastąp domyślny magazyn danych z
OkioStoragenaFileStorage, aby zwiększyć niezawodność przez zmniejszenieCorruptionException. (I71181, b/346197747)
Wersja 1.1.3
26 lutego 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.3 Wersja 1.1.3 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem
FileNotFoundExceptionwOkioStorage, który występował przy uruchamianiu aplikacji. Jeśli pierwsza próba odczytania pliku nie powiedzie się, zostanie podjęta druga próba. Może się bowiem zdarzyć, że podczas pierwszej próby odczytu plik został utworzony przez inny proces. (I43b3f, b/337870543)
Wersja 1.1.2
15 stycznia 2025 r.
Publikacja androidx.datastore:datastore-*:1.1.2 Wersja 1.1.2 zawiera te zmiany.
Poprawki błędów
- 8-krotne skrócenie czasu oczekiwania na odczyt z pamięci podręcznej (
DataStore.data.first()). (22b8a40) ReplaceFileCorruptionHandlermożna utworzyć na podstawie wspólnego kodu KMP. (7632e839)
Wersja 1.1.1
1 maja 2024 r.
Publikacja androidx.datastore:datastore-*:1.1.1 Wersja 1.1.1 zawiera te zmiany.
Poprawki błędów
- Usunięto fałszywy alarm w systemie Linux dotyczący błędu „Resource deadlock would occur” (Wystąpiłby zakleszczenie zasobów) w przypadku, gdy wiele instancji
DataStorepróbuje zapisywać dane z różnych procesów, wycofując blokadę pliku.
Wersja 1.1.0
17 kwietnia 2024 r.
Publikacja androidx.datastore:datastore-*:1.1.0 Wersja 1.1.0 zawiera te zmiany.
Najważniejsze zmiany od wersji 1.0.0
Więcej informacji znajdziesz w informacjach o wersji alfa i beta 1.1.0. Oto niektóre z najważniejszych zmian w wersji 1.1.0:
- DataStore obsługuje teraz wiele procesów uzyskujących dostęp do tego samego pliku, z możliwością obserwacji w różnych procesach.
- Nowy interfejs Storage umożliwia dostosowywanie sposobu przechowywania lub serializacji modeli danych.
- Teraz możesz używać DataStore w projektach Kotlin Multiplatform.
Wersja 1.1.0-rc01
3 kwietnia 2024 r.
Publikacja androidx.datastore:datastore-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
- Poprawiono spadek wydajności, w przypadku którego wywołania
updateDatanie optymalizowały zapisów na dysku, jeśli nowe dane były takie same jak stare (d64cfb5). - Rozwiązaliśmy problem z wyścigiem, który powodował, że
MultiProcessDataStoremogło pomijać unieważnienia podczas inicjalizacji. ((b/326141553),(094c2dd))
Wersja 1.1.0-beta02
6 marca 2024 roku
Publikacja androidx.datastore:datastore-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Poprawki błędów
- Ulepszenie wydajności w przypadku
DataStorezbiera powiadomienia o aktualizacjach tylko wtedy, gdy są one obserwowane. (b/267792241)- Pamiętaj, że ta zmiana może spowodować
UncompletedCoroutinesErrorw testach, jeśli używasz biblioteki testowej Coroutines. Aby uniknąć tego problemu, podczas inicjowaniaDataStorew testach przekażTestScope.backgroundScope.
- Pamiętaj, że ta zmiana może spowodować
- Rozwiązaliśmy problem z zagnieżdżonymi wywołaniami
updateDataw tej samej instancji, które powodowały zakleszczenie. (b/241760537) - Funkcja
DataStorenie będzie już zgłaszać błęduIOExceptions, jeśli podczas migracji nie uda się usunąćSharedPreferences. (b/195553816) - Rozwiązaliśmy problem polegający na tym, że zmiana nazwy pliku kończyła się niepowodzeniem podczas
updateDataw środowiskach JVM innych niż Android. (b/203087070) - Rozwiązaliśmy problem, który powodował, że po zainicjowaniu
DataStorenie była obsługiwana wartośćCorruptionException. (b/289582516)
Wersja 1.1.0-beta01
10 stycznia 2024 r.
androidx.datastore:datastore-*:1.1.0-beta01 została opublikowana bez zmian od 1.1.0-alpha07. Wersja 1.1.0-beta01 zawiera te zmiany.
Wersja 1.1.0-alpha07
29 listopada 2023 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha07 Wersja 1.1.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metody
MultiProcessDataStoreFactorynie są już eksperymentalne.Adnotacja@ExperimentalMultiProcessDataStorezostała całkowicie usunięta. (Ieee54, I8e607)
Poprawki błędów
- Wprowadzenie usunięcia adnotacji
@ExperimentalMultiProcessDataStorew wersji 1.1.0-alpha07. (I8e607)
Wersja 1.1.0-alpha06
1 listopada 2023 roku
Publikacja androidx.datastore:datastore-*:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Metoda fabryczna
createSingleProcessCoordinatorotrzymuje teraz ścieżkę pliku (String,java.io.Fileiokio.Path), aby była zgodna zcreateMultiProcessCoordinator. (I211c8, b/305755935)
Wersja 1.1.0-alpha05
6 września 2023 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usługa Datastore
FileStoragejest już dostępna publicznie, więc klienci mogą podawać parametry niestandardowe. (Icb985) - Zmieniono konstruktor
OkioStorage, aby akceptowałInterProcessCoordinator, dzięki czemu można go używać na Androidzie zMultiProcessCoordinator. (Iecea3)
Poprawki błędów
- Naprawiono problem z
MultiProcessCoordinatorniemożnością monitorowania wielu plików w tym samym katalogu. - Naprawiono problem z wykrywaniem zduplikowanych plików, gdy ścieżki plików nie są znormalizowane.
- Poprawianie nieprawidłowych wartości zwracanych przez
RxDataStore#isDisposed. - Napraw brakującą konfigurację ProGuard dla artefaktu
datstore-preferences-core.
Wersja 1.1.0-alpha04
5 kwietnia 2023 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.
Poprawki błędów
- Ulepsz wewnętrzną implementację, aby uniknąć sytuacji wyścigu, w której przepływ danych
DataStoremoże po aktualizacji emitować starszą wartość.
Wersja 1.1.0-alpha03
24 marca 2023 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha03
Poprawki błędów
- Usunięto ograniczenia zależności z artefaktów Maven, aby obejść problem z kompilacją w przypadku platform Kotlin Native (b/274786186, KT-57531).
Wersja 1.1.0-alpha02
22 marca 2023 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.
Uwagi
Pamiętaj, że ta wersja zawiera ważną wewnętrzną zmianę, która łączy implementacje DataStore dla jednego i wielu procesów. Zwróć uwagę na ewentualne niezamierzone zmiany w działaniu (np. czas powiadomień o aktualizacji). Aby zgłosić takie zmiany, możesz użyć komponentu do śledzenia problemów.
Nowe funkcje
- Możesz teraz używać
DataStorew projektach KMM. Pamiętaj, że platformy inne niż Android w przypadku DataStore są nadal w fazie eksperymentalnej, ale zdecydowaliśmy się połączyć wersje, aby deweloperzy mogli je łatwiej wypróbować. - Funkcje wieloprocesowe zostały przeniesione z
androidx.datastore.multiprocessdoandroidx.datastore.core. - Dodano nową metodę fabryczną w
androidx.datastore.core.MultiProcessDataStoreFactory, która umożliwia tworzenie instancji DataStore z obiektamiStoragedo operacji na plikach. - Dodano nowy interfejs
InterProcessCoordinator, który ułatwia komunikację między wieloma instancjami DataStore w różnych procesach. Pamiętaj, że implementacjaInterProcessCoordinatorw wielu procesach jest dostępna tylko na urządzeniach z Androidem.
Zmiany w interfejsie API
- Dodaj
InterProcessCoordinatordoStorageConnectionw interfejsie datastore-core (I555bb) - Zmiana interfejsów API w datastore-core
MultiProcessDataStoreFactoryna interfejsy API Storage. (Iac02f) - Przeniesienie publicznych interfejsów API z datastore-multiprocess do datastore-core (I76d7c)
- Udostępniono
PreferencesSerializerz datastore-preferences-core (I4b788) - Dodawanie adnotacji
@JvmDefaultWithCompatibility(I8f206)
Wersja 1.1.0-alpha01
9 listopada 2022 r.
Publikacja androidx.datastore:datastore-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Obsługa przypadków użycia z wieloma procesami, w których spójność danych jest gwarantowana w przypadku
DataStoreinstancji w różnych procesach. DodajMultiProcessDataStoreFactory#create, aby utworzyć takie instancjeDataStore. - Nowy interfejs Storage, który umożliwia zmianę podstawowego mechanizmu przechowywania danych w przypadku
Datastore. Dostępne są implementacje dla pakietów java.io i okio.DataStorema nowe metody, które akceptują ten obiekt Storage.
Zmiany w interfejsie API
- Zmiana interfejsów API w datastore-core
MultiProcessDataStoreFactoryna interfejsy API Storage. (Iac02f) - Przeniesienie publicznych interfejsów API z datastore-multiprocess do datastore-core (I76d7c)
- Udostępniono
PreferencesSerializerz datastore-preferences-core (I4b788)
Wersja 1.0.0
Wersja 1.0.0
4 sierpnia 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
Jetpack DataStore to rozwiązanie do przechowywania danych, które umożliwia zapisywanie par klucz-wartość lub obiektów z określonym typem za pomocą buforów protokołu. DataStore używa korutyn Kotlin i Flow do asynchronicznego, spójnego i transakcyjnego przechowywania danych.
Wersja 1.0.0-rc02
21 lipca 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-rc02 Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Wyjaśnij, że funkcja
SharedPreferencesMigrationnie jest uruchamiana, jeśli nie ma kluczy. (Icfa32, b/192824325) - Naprawiono błąd, w którym funkcja
SharedPreferencesMigrationskonstruowana za pomocą funkcjiMIGRATE_ALL_KEYSzgłaszała wyjątek, jeśli żądany klucz jeszcze nie istniał. (Ie318a, b/192824325)
Wersja 1.0.0-rc01
30 czerwca 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, w którym plik .java został przypadkowo dodany do końcowego pliku JAR (I65d96, b/188985637).
Wersja 1.0.0-beta02
16 czerwca 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiąż problem dotyczący produktu:
ClassVerificationFailure(b/187450483)
Wersja 1.0.0-beta01
21 kwietnia 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuwanie przeciążeń JVM w przypadku metod tylko w Kotlinie (I2adc7)
Poprawki błędów
- Naprawiono błąd, w którym delegaci bazy danych mogli powodować wyciek kontekstów (Ie96fc, b/184415662).
Wersja 1.0.0-alpha08
10 marca 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Możesz teraz dodać migrację zależną od kontekstu do delegata usługi
dataStoreipreferencesDataStore. (I4ef69, b/173726702) - Dodaje funkcje pomocnicze do pobierania nazwy pliku, jeśli nie używasz już delegata lub funkcji datastore.createDataStore (I60f9a).
- Funkcje Serializer writeTo i readFrom są teraz zawieszane. Jeśli masz zaimplementowany Serializer, musisz zaktualizować funkcje, aby były funkcjami zawieszania. (I1e58e)
- Dodano delegatów właściwości dla użytkowników RxDataStore. (Ied768, b/173726702)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)
Wersja 1.0.0-alpha07
24 lutego 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Funkcja rozszerzenia
Context.createDataStorezostała usunięta i zastąpiona delegatem właściwości globalDataStore. Wywołaj funkcję callGlobalDataStore raz na najwyższym poziomie w pliku Kotlin. Na przykład:val Context.myDataStore by dataStore(...)Umieść go na najwyższym poziomie pliku Kotlin, aby istniała tylko jedna jego instancja. (I57215, b/173726702)
Funkcje RxDataStore znajdują się teraz w klasie RxDataStore zamiast w funkcjach rozszerzających w DataStore. (Idccdb, b/177691248)
Jeśli chcesz przenieść EncryptedSharedPreferences (lub SharedPreferences z bezpośrednim uruchamianiem) do DataStore, możesz to zrobić za pomocą nowego konstruktora SharedPreferencesMigration, który umożliwia wstrzykiwanie SharedPreferences. (I8e04e, b/177278510)
Poprawki błędów
- DataStore będzie teraz zgłaszać wyjątek, jeśli dla tego samego pliku jest aktywnych wiele obiektów DataStore. Jeśli nie zarządzasz DataStore jako pojedynczym obiektem lub nie masz pewności, że w przypadku pliku nie są jednocześnie aktywne 2 instancje DataStore, podczas odczytywania lub zapisywania danych w DataStore mogą pojawiać się wyjątki. Można je rozwiązać, zarządzając DataStore jako Singleton. (Ib43f4, b/177691248)
- Poprawiono działanie anulowania, gdy anulowany jest zakres wywołującego. (I2c7b3)
Wersja 1.0.0-alpha06
13 stycznia 2021 r.
Publikacja androidx.datastore:datastore-*:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano otoczki RxJava dla DataStore. Artefakty
datastore-rxjava2/3zawierają otoczki podstawowych interfejsów API DataStore (RxDataStore,RxDataStoreBuilderiRxDataMigration). Artefaktydatastore-preferences-rxjava2/3zawierają konstruktor do tworzenia DataStore preferencji.
Zmiany w interfejsie API
- Ukryj interfejs CorruptionHandler. Nie było powodu, aby była publiczna, ponieważ fabryka DataStore akceptuje tylko ReplaceFileCorruptionHandler. (I0b3b3, b/176032264)
- Metoda
preferencesKey<T>(name: String): Key<T>została usunięta i zastąpiona metodami specyficznymi dla każdego obsługiwanego typu, np.preferencesKey<Int>("int")to terazintPreferencesKey("int")(Ibcfac, b/170311106).
Poprawki błędów
- Poprawiliśmy dokumentację DataStoreFactory, w której pominięto informację, że plik bazy danych jest tworzony w podkatalogu „datastore/”. (Ica222)
Wersja 1.0.0-alpha05
2 grudnia 2020 r.
Publikacja androidx.datastore:datastore-*:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
- Dodaj lepszą dokumentację i wyjątki dotyczące jednoczesnych zapisów w magazynach danych. (Ia98a2, b/173522155, b/173726702)
- Teraz zezwalamy na zamykanie obiektu OutputStream przekazywanego do metody
Serializer.writeTo()(ale nie wymagamy tego). (I5c9bf, b/173037611)
Wersja 1.0.0-alpha04
17 listopada 2020 r.
Publikacja androidx.datastore:datastore-*:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z pakowaniem, który powodował następującą awarię w magazynie danych preferencji:
1.0.0-alpha03java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- Wypadek został pierwotnie zgłoszony tutaj: b/173036843
- (I4712d, b/173036843)
Wersja 1.0.0-alpha03
11 listopada 2020 roku
Publikacja androidx.datastore:datastore-*:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Ustawienia obsługują teraz wartości podwójnej precyzji (co jest przydatne, jeśli potrzebujesz większej precyzji niż w przypadku liczb zmiennoprzecinkowych) (I5be8f, b/169471808)
Zmiany w interfejsie API
- Utworzono czystą zależność Kotlin dla DataStore, aby umożliwić szybszą kompilację.
androidx.datastore:datastore-corezawiera tylko podstawowe interfejsy API Kotlin, aandroidx.datastore:datastorezawiera interfejsy API zależne od Androida (w tym konstruktorySharedPreferencesMigrationiContext.createDataStore). (I42d75, b/168512698) - Wydzielanie celów dla magazynu danych o preferencjach w celu przyspieszenia kompilacji w języku Kotlin (Ia3c19)
Serializatory wymagają teraz nowej właściwości wartości domyślnej, która będzie używana, jeśli na dysku nie ma danych. Ułatwia to implementację niestandardowych serializatorów, dzięki czemu użytkownicy nie muszą specjalnie obsługiwać pustych strumieni wejściowych (puste strumienie wejściowe nie są analizowane za pomocą JSON).
- Dodaliśmy też sprawdzenie, czy strumień wyjściowy przekazany do writeTo() nie jest zamknięty. Jeśli jest zamknięty, zgłaszane są wyjątki (I16e29).
Ustawienie konstruktora SharedPreferencesView jako wewnętrznego. Pierwotnie był on publiczny, aby umożliwić testowanie. Zamiast tego testy powinny tworzyć obiekt SharedPreferencesMigration i testować go. (I93891)
Poprawki błędów
- Parametr
produceFilew funkcjachDataStoreFactoryiPreferenceDataStoreFactoryjest teraz ostatnim parametrem na liście, dzięki czemu możesz używać składni lambdy końcowej w języku Kotlin. (Ibe7f1, b/169425442) - Zgodność z nowymi wymaganiami dotyczącymi interfejsu API w Kotlinie (I5ae1e)
Znane problemy
- Magazyn danych preferencji ulega awarii z powodu
java.lang.NoClassDefFoundError. (b/173036843)
Wersja 1.0.0-alpha02
14 października 2020 r.
Publikacje androidx.datastore:datastore-core:1.0.0-alpha02 i androidx.datastore:datastore-preferences:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano zabezpieczenie przed mutacją w datastore-core. Zmiana powoduje, że magazyn danych przestaje działać u osób, które używają go z typami innymi niż proto lub preferences (I6aa84)
- Dodanie do pliku Preferences.kt metody
toString, która ułatwia debugowanie bieżącego stanu (I96006) - Dodano wyjątek, aby zapobiec niewłaściwemu wykorzystaniu
DataStore.Preferences(I1134d) - Naprawiono błąd, który powodował awarię aplikacji podczas uruchamiania (I69237, b/168580258).
Wersja 1.0.0-alpha01
2 września 2020 r.
Publikacje androidx.datastore:datastore-core:1.0.0-alpha01 i androidx.datastore:datastore-preferences:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Jetpack DataStore to nowe i ulepszone rozwiązanie do przechowywania danych, które ma zastąpić SharedPreferences. Biblioteka DataStore, oparta na korutynach i Flow w języku Kotlin, udostępnia 2 różne implementacje:
- Proto DataStore, który umożliwia przechowywanie obiektów z określonym typem (opartych na buforach protokołu).
- Preferences DataStore, który przechowuje pary klucz-wartość.
Dane są przechowywane asynchronicznie, spójnie i transakcyjnie, co eliminuje większość wad SharedPreferences.