DataStore

przechowywać dane asynchronicznie, spójnie i transakcyjnie, co pozwala uniknąć niektórych wad SharedPreferences;
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.

Tworzenie nowego problemu

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 CorruptionHandler jako publiczną. (I9ac35, b/452406457)
  • Używaj konta androidx.core.util.Function w aplikacji GuavaDataStore. (I71eae, b/448563999)
  • Dodaj przeciążenie dla funkcji GuavaDataStore.from, które przyjmuje obiekt Executor zamiast obiektu CoroutineContext. (I989fa, b/448563183)

Poprawki błędów

  • Naprawiono java.lang.UnsatisfiedLinkError podczas używania DataStore w aplikacji zoptymalizowanej za pomocą R8, ale nieużywającej getDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293)
  • Rozwiązanie problemu polegającego na tym, że operacje GuavaDataStore mogł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 GuavaDataStore z obiektu DataStore. (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 datastore metodą 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 GuavaListenableFuture za pomocą GuavaDataStore. (Iadd5e0)
  • Korzystanie z DataStore w trybie DirectBoot jest 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 API DataStore: createInDeviceProtectedStorage()DataStoreFactorydeviceProtectedDataStore()DataStoreDelegate. (Ib90e56)

Zmiany w interfejsie API

  • Dodaliśmy PreferencesFileSerializer, który implementuje interfejs androidx.datastore.core.Serializer do użycia z FileStorage. (I4c71f3)

Poprawki błędów

  • Rozwiązano problem FileNotFoundExceptionOkioStorage podczas uruchamiania przez dodanie drugiej próby odczytu danych w przypadku wyścigu. (I43b3fb, b/337870543)
  • Zdefiniowano domyślny konstruktor dla ReplaceFileCorruptionHandler na 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 DSL androidbuild.gradle zamiast androidLibrary. (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 CorruptionExceptionPreferencesDataStore, domyślne miejsce na dane zostało zmienione z OkioStorage na FileStorage. Ta zmiana została wprowadzona przez dodanie PreferencesFileSerializer. 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 OkioStorage na FileStorage, aby zwiększyć niezawodność przez zmniejszenie CorruptionException. (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 FileNotFoundExceptionOkioStorage, 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)
  • ReplaceFileCorruptionHandler moż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 DataStore pró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 updateData nie 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 MultiProcess DataStore mogł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 DataStore zbiera powiadomienia o aktualizacjach tylko wtedy, gdy są one obserwowane. (b/267792241)
    • Pamiętaj, że ta zmiana może spowodować UncompletedCoroutinesError w testach, jeśli używasz biblioteki testowej Coroutines. Aby uniknąć tego problemu, podczas inicjowania DataStore w testach przekaż TestScope.backgroundScope.
  • ​Rozwiązaliśmy problem z zagnieżdżonymi wywołaniami updateData w tej samej instancji, które powodowały zakleszczenie. (b/241760537)
  • Funkcja DataStore nie będzie już zgłaszać błędu IOExceptions, 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 updateData w środowiskach JVM innych niż Android. (b/203087070)
  • Rozwiązaliśmy problem, który powodował, że po zainicjowaniu DataStore nie 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 MultiProcessDataStoreFactory nie są już eksperymentalne.Adnotacja @ExperimentalMultiProcessDataStore została całkowicie usunięta. (Ieee54, I8e607)

Poprawki błędów

  • Wprowadzenie usunięcia adnotacji @ExperimentalMultiProcessDataStore w 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 createSingleProcessCoordinator otrzymuje teraz ścieżkę pliku (String, java.io.File i okio.Path), aby była zgodna z createMultiProcessCoordinator. (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 FileStorage jest 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 z MultiProcessCoordinator. (Iecea3)

Poprawki błędów

  • Naprawiono problem z MultiProcessCoordinator niemoż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 DataStore moż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ć DataStore w 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.multiprocess do androidx.datastore.core.
  • Dodano nową metodę fabryczną w androidx.datastore.core.MultiProcessDataStoreFactory, która umożliwia tworzenie instancji DataStore z obiektami Storage do operacji na plikach.
  • Dodano nowy interfejs InterProcessCoordinator, który ułatwia komunikację między wieloma instancjami DataStore w różnych procesach. Pamiętaj, że implementacja InterProcessCoordinator w wielu procesach jest dostępna tylko na urządzeniach z Androidem.

Zmiany w interfejsie API

  • Dodaj InterProcessCoordinator do StorageConnection w interfejsie datastore-core (I555bb)
  • Zmiana interfejsów API w datastore-coreMultiProcessDataStoreFactory na interfejsy API Storage. (Iac02f)
  • Przeniesienie publicznych interfejsów API z datastore-multiprocess do datastore-core (I76d7c)
  • Udostępniono PreferencesSerializer z 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 DataStore instancji w różnych procesach. Dodaj MultiProcessDataStoreFactory#create, aby utworzyć takie instancje DataStore.
  • 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. DataStore ma nowe metody, które akceptują ten obiekt Storage.

Zmiany w interfejsie API

  • Zmiana interfejsów API w datastore-coreMultiProcessDataStoreFactory na interfejsy API Storage. (Iac02f)
  • Przeniesienie publicznych interfejsów API z datastore-multiprocess do datastore-core (I76d7c)
  • Udostępniono PreferencesSerializer z 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 SharedPreferencesMigration nie jest uruchamiana, jeśli nie ma kluczy. (Icfa32, b/192824325)
  • Naprawiono błąd, w którym funkcja SharedPreferencesMigration skonstruowana za pomocą funkcji MIGRATE_ALL_KEYS zgł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 dataStorepreferencesDataStore. (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.createDataStore został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/3 zawierają otoczki podstawowych interfejsów API DataStore (RxDataStore, RxDataStoreBuilderRxDataMigration). Artefakty datastore-preferences-rxjava2/3 zawierają 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 teraz intPreferencesKey("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

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-core zawiera tylko podstawowe interfejsy API Kotlin, a androidx.datastore:datastore zawiera interfejsy API zależne od Androida (w tym konstruktory SharedPreferencesMigrationContext.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 produceFile w funkcjach DataStoreFactoryPreferenceDataStoreFactory jest 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-alpha02androidx.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-alpha01androidx.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.