Archiwum informacji o wersji komponentów architektury

15 stycznia 2019 r.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-beta02. Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Naprawiono przypadek skrajny, w którym okresowa praca mogła być wykonywana więcej niż raz w danym przedziale czasu na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). b/121998363
  • Naprawiono błąd ConcurrentModificationException na urządzeniach z Androidem 5.1 (interfejs API) poziomu 22) lub niższym. b/121345393
  • Naprawiono błędne wykonywanie pracy, gdy na urządzeniach nie były spełnione ograniczenia z Androidem 5.1 (poziom interfejsu API 22) lub niższym. b/122578012
  • Zoptymalizowano obsługę ukończenia pracy w celu skrócenia w niektórych przypadkach skrajnych. b/122358129
  • Dodaliśmy zmianę odnoszącą się do potencjalnych warunków wyścigu w wielu instancjach z LiveData używanych przez WorkManager.
  • Przeniesiono, aby używać zależności Room 1.1.1 zamiast 1.1.1-rc01; ich są identyczne. b/122578011

19 grudnia 2018 r.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-beta01. Ta wersja nie zawiera żadnych zmian interfejsu API. od tej pory WorkManager powinien zachować stabilny interfejs API do następnej wersji, chyba że wystąpi problem krytyczny. Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Anulowane wcześniej elementy podrzędne dla pomyślnie ukończonego zadania nadrzędnego nie będą już działać. b/120811767
  • Prawidłowo zainicjowane klasy logowania (wyświetlane głównie podczas testów).

18 grudnia 2018 r.

Nawigacja 1.0.0-alpha09 została zwolniona. Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.

Postanowiliśmy nie kontynuować rozwoju android.arch.navigation:navigation-testing artefakt. Co potwierdzono, przydatne do wewnętrznych testów aplikacji NavController, zdecydowanie zalecamy alternatywne strategie testowania, takie jak naśmiewanie się z instancji NavController. aby sprawdzić, czy wykonywane są prawidłowe wywołania navigate(). Ten jest szczegółowo omówione Prezentacja na temat pojedynczej aktywności na AndroidDevSummit 2018 będziemy opracowywać dodatkową dokumentację dotyczącą testowania dzięki Nawigacji.

Nowe funkcje

  • Elementy MenuItem z: menuCategory="secondary" nie będą już cofnięte. stos w przypadku użycia z metodami NavigationUI. b/120104424
  • AppBarConfiguration umożliwia teraz ustawienie kreacji zastępczej OnNavigateUpListener. instancja, która zostanie wywołana po zwróceniu navController.navigateUp() false. b/79993862 b/120690961

Zmiany najważniejsze

  • Gdy używasz: <argument> i elementu argType="reference", Nawigacja nie jest już dostępna analizuje odwołanie, zamiast podawać sam identyfikator surowego zasobu. b/111736515
  • onNavDestinationSelected() domyślnie powraca do miejsca docelowego wykresu nawigacji. co jest spójne z metodami setup. Dodaj menuCategory="secondary" do Twojego urządzenia MenuItem, aby uniknąć problemów z tylnym stosem. Aosp/852869
  • Metody fromBundle() wygenerowanych klas Args mają teraz wartość inną niż null Bundle zamiast Bundle do wartości null Aosp/845616

Poprawki błędów

  • Argumenty są teraz prawidłowo interpretowane z precyzyjnych linków jako prawidłowe argType. zamiast zawsze jako ciągi b/110273284
  • Nawigacja prawidłowo eksportuje teraz swoje zasoby publiczne b/121059552
  • Bezpieczne argumenty są teraz zgodne z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 lub nowszej b/119662045

12 grudnia 2018 r.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-alpha13. Ta wersja zawiera niewielką zmianę interfejsu API, która będzie przydatna dla niektórych użytkowników Kotlin.

Zmiany interfejsu API

  • Element androidx.work.Result został przeniesiony do klasy wewnętrznej ListenableWorker. Zapobiega to konfliktom refaktoryzacyjnym z klasą Result najwyższego poziomu Kotlin. Ta zmiana interfejsu API jest niezbędna. b/120564418

Zmiana w interfejsie API

  • Element androidx.work.Result został przeniesiony do klasy wewnętrznej ListenableWorker.

6 grudnia 2018 r.

Strona

Strona 2.1.0-rc01 została zwolniona bez zmian od 2.1.0-beta01.

Nawigacja 1.0.0-alpha08 została zwolniona. Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.

Nowe funkcje

  • Etykiety miejsc docelowych używane z metodami NavigationUI będą od teraz automatycznie zastąp {argName} instancji w kolumnie android:label prawidłowym argumentem b/80267266
  • Nawigacja korzysta teraz z Biblioteki pomocy w wersji 28.0.0 b/120293333

Zmiany najważniejsze

  • Zmiana nazwy użytkownika z OnNavigatedListener na OnDestinationChangedListener b/118670572
  • Funkcja OnDestinationChangedListener przekazuje teraz również Bundle argumentów Aosp/837142
  • Atrybuty app:clearTask i app:launchDocument oraz powiązane z nimi atrybuty Liczba usuniętych metod: . Użyj funkcji app:popUpTo jako pierwiastka wykresu, aby: usuń wszystkie miejsca docelowe ze stosu wstecznego. b/119628354
  • ActivityNavigator.Extras używa teraz wzorca Builder i dodaje możliwość ustaw dowolne flagi: Intent.FLAG_ACTIVITY_ Aosp/828140
  • Zmiana nazwy użytkownika z NavController.onHandleDeepLink na handleDeepLink Aosp/836063
  • Wiele klas i metod, które nie są przeznaczone do podklasyfikacji, na przykład NavOptions, NavInflater, NavDeepLinkBuilder i AppBarConfiguration, zostały final Aosp/835681
  • Wycofana metoda NavHostFragment.setGraph() została usunięta Aosp/835684
  • Wycofana metoda NavigationUI.navigateUp(DrawerLayout, NavController) został usunięty. Aosp/835684
  • Tworzenie fragmentów zostało przeniesione do FragmentNavigator, co ułatwia tworzenie przekazać tworzenie fragmentu do FragmentFactory. b/119054429
  • Konstruktor dla NavGraphNavigator nie wymaga już Context Aosp/835340
  • NavigatorProvider to teraz za pomocą klasy, a nie interfejsu. Wartość NavigatorProvider zwrócona przez getNavigatorProvider(). nie zmieniła swojego działania. Aosp/830660
  • NavDestination.navigate() został(a) usunięty(a). Zadzwoń do firmy navigate() na Navigator . Aosp/830663
  • Znaczna refaktoryzacja tekstu Navigator eliminująca potrzebę użycia OnNavigatorNavigatedListener i zamiast tego funkcja navigate zwróciła przekierowany do niej element NavDestination.
  • Instancje Navigator nie mogą już wysyłać zdarzeń pop do NavController. Rozważ za pomocą OnBackPressedCallback do przechwytywać naciśnięcia przycisku wstecz i wywołać navController.popBackStack(). Aosp/833716

Poprawki błędów

  • popUpTo działa teraz konsekwentnie, gdy miejsce docelowe jest elementem <navigation> b/116831650
  • Naprawiliśmy kilka błędów, które powodowały wyświetlanie się komunikatu o błędzie IllegalArgumentException. w przypadku korzystania z wykresów zagnieżdżonych b/118713731 b/113611083 b/113346925 b/113305559
  • Uzupełniony zostanie atrybut dataPattern <activity> miejsc docelowych argumentów z argumentów niebędących ciągiem znaków, wywołując funkcję toString() b/120161365

Bezpieczne argumenty

  • Bezpieczne argumenty obsługują obiekty możliwe do szeregowania, w tym wartości typu Enum. Typy typów wyliczeniowych może ustawić wartość domyślną przy użyciu literału wyliczeniowego bez nazwy klasy (np. app:defaultValue="READ") b/111316353
  • Bezpieczne argumenty obsługują tablice wszystkich obsługiwanych typów b/111487504
  • Bezpieczne argumenty ignoruje teraz podfoldery katalogów zasobów b/117893516
  • Bezpieczne argumenty dodają adnotacje @Override tam, gdzie jest to potrzebne b/117145301

5 grudnia 2018 r.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-alpha12. Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się poniżej z sekcją Zmiana znaczenia zmian w interfejsie API. Prawdopodobnie udostępnimy tę wersję jako pierwszą wersję beta. alpha12 zawiera też obszerne aktualizacje dokumentacji.

Zmiany interfejsu API

  • Nowy artefakt, work-rxjava2, przedstawia RxWorker. To jest zasób typu ListenableWorker, który oczekuje na właściwość Single<Payload>.
  • W związku z nadchodzącym wycofaniem usługi Firebase JobDispatcher wycofaliśmy jej obsługę. Oznacza to, że artefakt work-firebase nie będzie już aktualizowany w momencie przejścia na wersję beta. Planujemy dodać w przyszłości alternatywną wersję.
  • Łącznie Payload w Result. Result jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocą Result.success() (lub Result.success(Data)), Result.failure() (albo Result.failure(Data)) i Result.retry(). ListenableFuture ma teraz wynik Result zamiast Payload. Elementy typu Worker nie mają metod pobierania ani metod ustawiania danych wyjściowych dla danych wyjściowych Data. To niezwykła zmiana.
  • Dodano Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) i Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) oraz warianty, aby lepiej obsługiwać identyfikatory URI treści wyzwalających wolno wyzwalanie. b/119919774
  • Dodano WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) wariant. Ta metoda wymaga interfejsu API 26.
  • Dodano metody rozszerzeń Operation.await() i ListenableFuture.await() Kotlin.
  • Nazwa Operation.getException() została zmieniona na Operation.getThrowable(). To niezwykła zmiana.
  • Klasa i metody odwołujące się do obiektu ContentUriTriggers nie są już dostępne do użytku publicznego. To niezwykła zmiana.
  • Usunęliśmy pozostałe metody varargs w WorkManager, WorkContinuation i OneTimeWorkRequest, aby usprawnić interfejs API. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znaczniki Arrays.asList(...). Nadal jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody. To niezwykła zmiana.
  • Usunięto WorkContinuation.combine(OneTimeWorkRequest, *) wariantu. przedstawiał mylący interfejs API; metody combine są bardziej zrozumiałe. To niezwykła zmiana.

Poprawki błędów

  • Implementacje sprzed wersji przedpremierowej z większą niezawodnością są teraz bardziej niezawodne, jeśli chodzi o odzyskiwanie stanu trwającego już procesu.
  • Pole LiveData zaobserwowane w usłudze observeForever jest śledzone przez WorkManagera. To jest backend poprawki z biblioteki pokoi. b/74477406
  • Data.Builder.build() zgłasza teraz wyjątek, jeśli zserializowany obiekt przekracza maksymalny rozmiar. Wcześniej działo się to tylko w wątku w tle, w którym nie było można prawidłowo go obsłużyć.
  • Rozróżnianie zadań zatrzymanych i anulowanych; getWorkInfoById() zwróci wartość WorkInfo z CANCELLED State w okresie ListenableWorker.onStopped().
  • Traktuj null Result jako błędy w procesie ListenableWorker. b/120362353
  • Poprawka spekulacyjna dotycząca tabletów Shield z interfejsem API 24, który czasami zwracał błąd IllegalArgumentException. b/119484416

Zmiana w interfejsie API

  • W związku z nadchodzącym wycofaniem usługi Firebase JobDispatcher wycofaliśmy jej obsługę. Oznacza to, że artefakt work-firebase nie będzie już aktualizowany w momencie przejścia na wersję beta. Planujemy dodać w przyszłości alternatywną wersję.
  • Łącznie Payload w Result. Result jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocą Result.success() (lub Result.success(Data)), Result.failure() (albo Result.failure(Data)) i Result.retry(). ListenableFuture ma teraz wynik Result zamiast Payload. Elementy typu Worker nie mają metod pobierania ani metod ustawiania danych wyjściowych dla danych wyjściowych Data.
  • Dodano metody rozszerzeń Operation.await() i ListenableFuture.await() Kotlin.
  • Nazwa Operation.getException() została zmieniona na Operation.getThrowable().
  • Klasa i metody odwołujące się do obiektu ContentUriTriggers nie są już dostępne do użytku publicznego.
  • Usunęliśmy pozostałe metody varargs w WorkManager, WorkContinuation i OneTimeWorkRequest, aby usprawnić interfejs API. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znaczniki Arrays.asList(...). Nadal jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody.
  • Usunięto WorkContinuation.combine(OneTimeWorkRequest, *) wariantu. przedstawiał mylący interfejs API; metody combine są bardziej zrozumiałe.

4 grudnia 2018 r.

Room

Zostaje zwolniona sala 2.1.0-alpha03 z obsługą połączeń i kilkoma poprawkami błędów.

Zmiany interfejsu API

  • Element FTS tokenizer w języku @Fts3/@Fts4 przyjmuje teraz ciąg znaków, a nie enum. Dzięki temu Sala może korzystać z niestandardowych tokenizerów. Wbudowane tokenery są nadal zdefiniowane w FtsOptions jako stałe ciągi znaków. b/119234881

Nowe funkcje

  • Sytuacje: metody DAO mogą teraz być zawieszanymi funkcjami. Aby obsługiwać funkcje zawieszania w pokoju, opublikowaliśmy nowy artefakt room-coroutines. b/69474692
  • Metody DAO z adnotacjami @Insert, @Delete lub @Update obsługują teraz ListenableFuture jako zwracany typ. b/119418331

Poprawki błędów

  • Naprawiono błąd polegający na tym, że usługa Room nieprawidłowo próbowała znaleźć konstruktor z kolumnami we właściwości ignoredColumns właściwości @Entity. b/119830714
  • Naprawiono błąd, który powodował, że usługa Room nie oznaczała parametrów metody DAO jako ostatecznej podczas generowania wygenerowanej implementacji. b/118015483
  • Naprawiono błąd polegający na tym, że procesor pokoju ulegał awarii podczas zgłaszania błędu w zapytaniu ze specjalnymi symbolami. b/119520136
  • Naprawiono błąd, który powodował odrzucanie innych implementacji Collection jako argumentów wyrażenia IN. b/119884035
  • Naprawiliśmy błąd, który powodował, że dane LiveData zwracane z Pokoju były usuwane po zaobserwowaniu w nieskończoność, przez co usługa nie wysyłała już nowych danych. b/74477406
  • Zaktualizowano blokadę zamknięcia urządzenia RoomDatabase, aby zmniejszyć rywalizację o blokadę. b/117900450

8 listopada 2018 r.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-alpha11. Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API od beta. W tej wersji wprowadzono zmiany w interfejsie API, które są nieistotne. zapoznaj się poniżej z sekcją Zmiana znaczenia zmian w interfejsie API.

Zmiany interfejsu API

  • work-runtime-ktx wprowadza nowe urządzenie CoroutineWorker.
  • Nazwa konta WorkStatus została zmieniona na WorkInfo. Nazwy wszystkich odpowiednich wariantów metody getStatus zostały zmienione na odpowiednich wariantów (getWorkInfo). To niezwykła zmiana.
  • Funkcja ListenableWorker.onStopped() nie akceptuje już argumentu logicznego wskazującego, czy WorkRequest został anulowany. WorkManager nie ma już tego rozróżnienia. To niezwykła zmiana.
  • Nazwa pakietu androidx.work.test została zmieniona na androidx.work.testing. To niezwykła zmiana.
  • Konfigurujący w domenie Constraints nie są już częścią publicznego interfejsu API. To niezwykła zmiana.
  • Funkcje WorkerParameters.getTriggeredContentUris() i WorkerParameters.getTriggeredContentAuthorities() zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. To niezwykła zmiana.
  • Nazwa ListenableWorker.onStartWork() została zmieniona na ListenableWorker.startWork(). To niezwykła zmiana.
  • Konstruktor dla WorkStatus nie jest już częścią publicznego interfejsu API. To niezwykła zmiana.
  • Nazwy Configuration.getMaxJobSchedulerID() i Configuration.getMinJobSchedulerID() zostały zmienione na Configuration.getMinJobSchedulerId() i Configuration.getMaxJobSchedulerId(). To niezwykła zmiana.
  • Dodaliśmy wiele adnotacji @NonNull do publicznego interfejsu API, aby poprawić jego ergonomię.
  • Dodaj interfejs WorkManager.enqueueUniqueWork() API, aby dodać do kolejki unikalnych OneTimeWorkRequest bez konieczności tworzenia WorkContinuation.
  • Wszystkie warianty metod enqueue i cancel w WorkManager zwracają teraz nowy typ Operation. To niezwykła zmiana.
  • Żadne warianty atrybutu enqueue nie akceptują już zmiennych typu WorkRequest. To niezwykła zmiana. Zamiast tego używaj kolekcji. Aby zmodyfikować istniejący kod, możesz użyć polecenia Arrays.asList(). Zrobiliśmy to, aby zmniejszyć liczbę powierzchni i metod interfejsu API.
  • Próba initialize WorkManager więcej niż raz na proces spowoduje teraz błąd IllegalStateException. To niezwykła zmiana.

Poprawki błędów

  • Elementy WorkRequest.Builder w artefaktie work-runtime-ktx używają teraz ListenableWorker. Poprawiono parametr b/117666259
  • Upewnij się, że następne uruchomienie instancji PeriodicWork przypada w przyszłości. Poprawiono parametr b/118204399
  • Podczas uruchamiania aplikacji przy użyciu WorkManagera usuń potencjalne wejścia/wyjścia dysku. Poprawiono parametr b/117796731
  • Napraw stan wyścigu w: WorkConstraintsTracker. Naprawiono android-workmanager/issues/56.

Zmiana w interfejsie API

  • Nazwa konta WorkStatus została zmieniona na WorkInfo. Nazwy wszystkich odpowiednich wariantów metody getStatus zostały zmienione na odpowiednich wariantów (getWorkInfo).
  • Funkcja ListenableWorker.onStopped() nie akceptuje już argumentu logicznego wskazującego, czy WorkRequest został anulowany. WorkManager nie ma już tego rozróżnienia.
  • Nazwa pakietu androidx.work.test została zmieniona na androidx.work.testing.
  • Konfigurujący w domenie Constraints nie są już częścią publicznego interfejsu API.
  • Funkcje WorkerParameters.getTriggeredContentUris() i WorkerParameters.getTriggeredContentAuthorities() zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje.
  • Nazwa ListenableWorker.onStartWork() została zmieniona na ListenableWorker.startWork().
  • Konstruktor dla WorkStatus nie jest już częścią publicznego interfejsu API.
  • Nazwy Configuration.getMaxJobSchedulerID() i Configuration.getMinJobSchedulerID() zostały zmienione na Configuration.getMinJobSchedulerId() i Configuration.getMaxJobSchedulerId().
  • Wszystkie warianty metod enqueue i cancel w WorkManager zwracają teraz nowy typ Operation.
  • Żadne warianty atrybutu enqueue nie akceptują już zmiennych typu WorkRequest.
  • Próba initialize WorkManager więcej niż raz na proces spowoduje teraz błąd IllegalStateException.

1 listopada 2018 r.

Strona

Strona 2.1.0-beta01 została zwolniona bez zmian od 2.1.0-alpha01.

30 października 2018 r.

Room

Udostępniliśmy pokój 2.1.0-alpha02 z kilkoma poprawkami błędów i nową funkcją.

Nowe funkcje

  • Dodano obsługę odwołań do @DatabaseView w @Relation. b/117680932

Poprawki błędów

  • Naprawiono błąd polegający na tym, że usługa Room wykonywała operację wejścia-wyjścia dysku w wątku głównym przy zasubskrybowaniu i usuwaniu za pomocą zwracanego typu Rx. b/117201279
  • Naprawiono błąd, który powodował, że funkcja Room nie znalazła odpowiedniego konwertera typu dla pola w klasie encji Kotlin. b/111404868
  • Naprawiono błąd, który powodował, że usługa Room generowała nieprawidłowy kod w przypadku implementacji interfejsu DAO zawierającej domyślną metodę Kotlin, która nie ma argumentów. b/117527454
  • Zaktualizowano parser gramatyki SQLite w pokoju, naprawiono problem z wydajnością, który powodował długi czas kompilacji. b/117401230

29 października 2018 r.

Udostępniliśmy nawigację 1.0.0-alpha07 z poprawkami błędów i zmianami w interfejsie API.

Nowe funkcje

Zmiany najważniejsze

  • Moduł navigation-testing-ktx został złożony do navigation-testing artifact i nie zostanie już opublikowana.
  • Artefakt navigation-testing jest teraz zależny od standardu Kotlin bibliotece. Interfejs API został zmieniony, aby był bardziej spójny z Kotlin konw., ale nadal możesz go używać do testów napisanych w Javie.
  • Wykresy nawigacyjne zarejestrowane w pliku manifestu metadanych nie są już obsługiwane. b/118355937
  • Akcji nie można już dołączać do elementu <activity> miejsca docelowe. Aosp/785539

Poprawki błędów

  • Precyzyjne linki teraz prawidłowo analizują parametry zapytania. b/110057514
  • Teraz w miejscach docelowych aktywności wszystkie animacje rozpoczynania i zamykania są stosowane w przypadku wszystkich animacji. b/117145284
  • Usunięto awarię, która występowała po zmianie konfiguracji przy korzystaniu z niestandardowych ustawień Nawigatory. b/110763345

Bezpieczne argumenty

  • Bezpieczne argumenty są teraz stale zależne od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
  • Można teraz generować wskazówki dla zajęć wewnętrznych. b/117407555
  • Naprawiono problem z generowaniem wskazówek dojazdu do tagu <include>. wykres. b/116542123

12 października 2018 r.

Strona

Udostępniamy stronę dla stron 2.1.0-alpha01 w 2 głównych wersjach – pomijaniu stron i bibliotekach rozszerzeń KTX dla każdego artefaktu. Wprowadziliśmy też kilka innych zmian w interfejsie API i poprawki błędów.

Zmiany interfejsu API

  • Dodano PagedList.Config.Builder.setMaxSize() w przypadku ograniczenia liczby wczytywanych elementów w pamięci.
  • Dodano aplikację androidx.paging.Config() jako alternatywę dla usługi Kotlin dla aplikacji PagedList.Config.Builder
  • Dodano aplikację androidx.paging.PagedList() jako alternatywę dla usługi Kotlin dla aplikacji PagedList.Builder
  • Dodano aplikację DataSourceFactory.toLiveData() jako alternatywę dla usługi Kotlin dla aplikacji LivePagedListBuilder
  • Dodano DataSourceFactory.toObservable() i toFlowable() jako alternatywne wersje Kotlin dla aplikacji RxPagedListBuilder
  • Dodano element AsyncPagedListDiffer.addPagedListListener() do słuchania przy zamienianiu elementu PagedList. b/111698609
  • Dodano wariant PagedListAdapter.onCurrentListChanged(), który przekazuje starą i nową listę; poprzedni wariant został wycofany.
  • Dodaliśmy PagedListAdapter/AsyncPagedListDiffer.submitList() warianty, które przyjmują dodatkowe wywołanie zwrotne, które jest wywoływane, jeśli wyświetli się lista stronicowana po różnicy. Pozwala to zsynchronizować zamianę PagedList z innymi aktualizacjami interfejsu. b/73781068
  • Dodano PagedList.getLoadedCount(), aby poinformować Cię, ile elementów jest w pamięci. Pamiętaj, że jeśli obiekty zastępcze są wyłączone, zwracana wartość jest zawsze równa .size().

Poprawki błędów

  • Usunięto warunek wyścigu podczas różnicowania w przypadku ponownego wykorzystania list. b/111591017.
  • PagedList.loadAround() wysyła teraz IndexOutOfBoundsException, gdy indeks jest nieprawidłowy. Wcześniej mógł się on zawiesić z niejasnym innym wyjątkiem.
  • Rozwiązaliśmy problem, który powodował, że bardzo mały rozmiar wczytywanych elementów przy niezmienionych danych uniemożliwiał dalsze wczytywanie strony b/113122599.
.

11 października 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha10 z obsługą pracy asynchronicznej kontrolowanej przez programistę. W tej wersji wprowadzono zmiany w interfejsie API, które są nieistotne. zapoznaj się poniżej z sekcją Zmiana znaczenia zmian w interfejsie API.

Przewidujemy, że WorkManager rozpocznie ostatnie fazy okresu alfa. Spodziewamy się, że interfejs API w wersji beta będzie stabilny, dlatego prosimy o przesyłanie opinii na temat narzędzia do śledzenia błędów.

Zmiany interfejsu API

  • Usunięto wszystkie metody i klasy dostępne wcześniej w usłudze deprecated, a zwłaszcza domyślny konstruktor Worker. Jest to przełomowa zmiana interfejsu API.
  • Nazwa NonBlockingWorker została zmieniona na ListenableWorker, która jest teraz odkrytą klasą publiczną i jest gotowa do użycia.
    • Funkcja ListenableWorker zapewnia dostęp do jednej metody abstrakcyjnej, ListenableFuture<Payload> onStartWork(), która jest wywoływana w wątku głównym. Od Ciebie zależy, czy rozpoczniesz i przetwarzasz pracę asynchronicznie. Gdy skończysz, odpowiednio zaktualizuj ListenableFuture. Referencyjne implementacje komponentów ListenableFuture znajdziesz w pakiecie Futures w alpha02 (patrz sekcja WorkManager poniżej).
    • Komponent Worker rozszerza zakres ListenableWorker i nadal działa tak jak wcześniej, z abstrakcyjną metodą Result doWork().
    • Niektóre metody i użytkowników zostały losowo przełożone z Worker do ListenableWorker.
    • Wkrótce udostępnimy implementacje referencyjne dla systemów ListenableWorker, które korzystają z współrzędnych Kotlin (po opublikowaniu wersji stabilnych) i RxJava2.
  • Interfejs WorkerFactory i konkretna implementacja DefaultWorkerFactory zostały połączone w klasę abstrakcyjną o nazwie WorkerFactory. Implementacja daje pewność, że w przypadku każdej instancji WorkerFactory utworzonej przez użytkownika domyślne zachowanie oparte na odbiciach będzie nazywane „ostatnią próbą”. To niezwykła zmiana.
  • Usunięto metody WorkManager.synchronous() i WorkContinuation.synchronous() oraz wszystkie powiązane metody. Dodano ListenableFuture<Void> jako typ zwracany wielu metod w interfejsie API. Jest to przełomowa zmiana interfejsu API.
    • Teraz możesz synchronicznie pobierać i obserwować je za pomocą funkcji ListenableFuture. Na przykład hasło WorkManager.enqueue() zostało użyte do zwrócenia wartości void; zwraca teraz ListenableFuture<Void>. Możesz wywołać ListenableFuture.addListener(Runnable, Executor) lub ListenableFuture.get(), aby uruchomić kod po zakończeniu operacji.
    • Pamiętaj, że te elementy typu ListenableFuture nie informują, czy operacja zakończyła się powodzeniem, czy niepowodzeniem. tylko że skończyli. Aby znaleźć te informacje, musisz połączyć metody w usłudze WorkManager.
    • Pomijamy wywołania funkcji cancel() w przypadku tych obiektów, ponieważ są one mylące i trudne do przełożenia (czy anulujesz operację czy związaną z nią pracę?). Wynika to z umowy Future.
    • Aby zachować spójność z synchronicznymi metodami getStatus*, udostępniliśmy warianty ListenableFuture i zmieniliśmy nazwę tych, które zwracały wartość LiveData, na „LiveData” jako część nazwy (na przykład getStatusesByIdLiveData(UUID)). Jest to przełomowa zmiana w interfejsie API.

Poprawki błędów

  • Naprawiliśmy znany problem z wersji alfa09 dotyczący zduplikowanych plików androidx-annotations.pro. Możesz usunąć obejście z poprzednich informacji o wersji, usuwając exclude 'META-INF/proguard/androidx-annotations.pro' z pliku Gradle.
  • Dodano konfiguracje ProGuard, aby zachować nowy konstruktor Worker. b/116296569
  • Popraw potencjalne zagrożenie (NullPointerException) w wyścigu, w którym czas pracy był REPLACE d. b/116253486 i b/116677275
  • WorkContinuation.combine() akceptuje teraz co najmniej 1 WorkContinuation zamiast 2 lub więcej. b/117266752

Zmiana w interfejsie API

  • Usunięto wszystkie metody i klasy dostępne wcześniej w usłudze deprecated, a zwłaszcza domyślny konstruktor Worker.
  • Interfejs WorkerFactory i konkretna implementacja DefaultWorkerFactory zostały połączone w klasę abstrakcyjną o nazwie WorkerFactory.
  • Usunięto: WorkManager.synchronous() i WorkContinuation.synchronous().
  • Metody WorkManager.getStatus*() zwracają teraz ListenableFuture. WorkManager.getStatus*LiveData() zwraca LiveData s.

Transakcje terminowe

Zostaje opublikowana transakcja terminowa 1.0.0-alpha02.

Zmiany interfejsu API

  • Deweloperzy mogą teraz używać ResolvableFuture i AbstractResolvableFuture jako prostych, betonowych implementacji środowiska ListenableFuture.

8 października 2018 r.

Room

Sala 2.1.0-alpha01 została zwolniona.

Nowe funkcje

  • FTS: sala obsługuje teraz elementy z mapowaną tabelą FTS3 lub FTS4. Do klas z adnotacjami @Entity można teraz dodatkowo dodać adnotacje za pomocą @Fts3 lub @Fts4, aby zadeklarować klasę przy użyciu tabeli wyszukiwania pełnotekstowego mapowania. Opcje FTS umożliwiające dalsze dostosowanie są dostępne za pomocą metod adnotacji. b/62356416
  • Widoki: sala obsługuje teraz deklarowanie klasy jako zapisanego zapytania, zwanego też widokiem z użyciem adnotacji @DatabaseView. b/67033276
  • Wartość automatyczna: pokój obsługuje teraz deklarowanie klas z adnotacjami Wartość automatyczna jako elementów i zamówień POJO. Adnotacje do sal @PrimaryKey, @ColumnInfo, @Embedded i @Relation można teraz zadeklarować w abstrakcyjnych metodach klasy z adnotacjami z wartościami automatycznymi. Aby pokój został prawidłowo zrozumiany, do tych adnotacji należy też dołączyć atrybut @CopyAnnotations. b/62408420
  • Dodatkowa obsługa typów zwrotów Rx: metody DAO oznaczone adnotacjami @Insert, @Delete lub @Update obsługują teraz zwroty Rx Completable, Single<T> i Maybe<T>. b/63317956
  • Typy stałe za pomocą funkcji @Relation: wcześniej sala wymagała możliwości skonfigurowania pól z adnotacjami @Relation, ale teraz mogą one być parametrami konstruktora.
  • enableMultiInstanceInvalidation: to nowy interfejs API w wersji RoomDatabase.Builder, który umożliwia unieważnianie wielu instancji RoomDatabase przy użyciu tego samego pliku bazy danych. Mechanizm unieważniania na wiele instancji działa też w wielu procesach. B/62334005
  • fallbackToDestructiveMigrationOnDowngrade: to nowy interfejs API w RoomDatabase.Builder, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję. b/110416954
  • ignoredColumns: to nowy interfejs API w adnotacji @Entity, którego można używać do wyświetlania listy ignorowanych pól według nazwy. Przydatny do ignorowania dziedziczonych pól elementu. B/63522075

Zmiany interfejsu API / działania

  • mCallback i mDatabase w pokoju RoomDatabase to teraz @Deprecated i zostaną usunięte w następnej głównej wersji pokoju. b/76109329

Poprawki błędów

  • Rozwiązaliśmy 2 problemy, które powodowały, że pokoje nie były prawidłowo przywracane z uszkodzonej bazy danych lub nieprawidłowej migracji podczas inicjowania. b/111504749 i b/111519144
  • Sala będzie teraz prawidłowo używać głównego konstruktora Kotlina w klasach danych, dzięki czemu nie będzie trzeba deklarować pól jako vars. b/105769985

1 października 2018 r.

Pokój 2.0.0 został zwolniony bez zmian w pokoju 2.0.0-rc01. Udostępniamy stronę 2.0.0 z jednym poprawką błędu.

Strona

Poprawki błędów

  • Rozwiązaliśmy problem, który mógł występować przy bardzo szybkim przewijaniu przy użyciu elementów PositionalDataSource i obiektów zastępczych b/114635383.

21 września 2018 r.

Udostępniono cykl życia 2.0.0 z 1 poprawką błędu z modelu 2.0.0-rc01 w modelu ViewModel.

Cykl życia

Poprawki błędów

  • Naprawiono regułę Propagarda ViewModel, która nieprawidłowo usuwała konstruktory b/112230489

20 września 2018 r.

Udostępniliśmy nawigację 1.0.0-alpha06 z poprawkami błędów i zmianami w interfejsie API.

Nowe funkcje

Zmiany interfejsu API

  • Zmiana powodująca niezgodność: metoda Nawigator navigate() przyjmuje teraz parametr Navigator.Extras.
  • Metoda getGraph() NavControllera to teraz NonNull b/112243286

Poprawki błędów

  • NavigationUI.setupWithNavController() nie ujawnia już wyświetleń, jeśli jest używany wraz z wyświetleniami z poszczególnych miejsc docelowych b/111961977
  • Nawigator onSaveState() jest teraz wywoływany tylko raz b/112627079

Bezpieczne argumenty

  • Klasy wskazówek dojazdu do miejsca docelowego nawigacji rozszerzają teraz klasyczną klasę wskazówek dojazdu z ich nadrzędnej klasy Directions (jeśli istnieje) b/79871405.
  • Klasy wskazówek i argumentów mają teraz przydatną implementację funkcji toString() b/111843389

19 września 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha09 z poprawkami błędów, aktualizacjami infrastruktury i zmianami w interfejsie API.

Znany problem

Jeśli napotkasz ten problem: „Znaleziono więcej niż 1 plik ze ścieżką niezależną od systemu operacyjnego „META-INF/proguard/androidx-annotations.pro””, umieść ten kod w pliku Gradle jako tymczasowe obejście tego problemu i naprawimy go w wersji alfa10:

Odlotowe

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Poprawki błędów

  • Dodano kolejną poprawkę niezbędną w przypadku „100 zadań” . b/115560696
  • Dodaliśmy kilka poprawek błędów ograniczeń klucza obcych spowodowanych warunkami wyścigu. b/114705286
  • Przekazane wywołania ConstraintTrackingWorker.onStopped(boolean) do bazowego elementu Worker. b/114125093
  • Egzekwuj poprawne minimalne opóźnienie wycofywania dla Firebase JobDispatcher. b/113304626
  • Ulepszone wątkowanie gwarantuje wewnętrzny dostęp do biblioteki.
  • Skoryguj potencjalny problem z wewnętrznym usuwaniem duplikatów wartości LiveData.

Zmiany interfejsu API

  • Możesz teraz tworzyć własne instancje Worker w czasie działania, określając WorkerFactory w WorkManager.Configuration. Fabryka kreacji zastępczej to DefaultWorkerFactory, która odpowiada działaniu poprzednich wersji WorkManagera.
    • Domyślne konstruktory dla Worker i NonBlockingWorker są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)) i wywołaj super(Context, WorkerParameters); w kolejnych wersjach WorkManager zostanie usunięty domyślny konstruktor.
  • Zaczęliśmy korzystać z nowego artefaktu ListenableFuture wewnętrznie (bez zależności Guava). W kolejnych wersjach dodamy do tego interfejsu API ListenableFutures. Ta zmiana umożliwi późniejsze ukrycie strony NonBlockingWorker.
  • Dodaj możliwość aktywowania zadań czasowych w TestDriver przez funkcje TestDriver.setInitialDelayMet(UUID) i TestDriver.setPeriodDelayMet(UUID). b/113360060

Zmiany najważniejsze

  • Domyślne konstruktory Worker i NonBlockingWorker zostały wycofane. Jak najszybciej przejdź na nowy konstruktor. W kolejnych wersjach domyślny konstruktor zostanie usunięty.

27 sierpnia 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha08 z poprawkami błędów.

Poprawki błędów

  • Komponenty WorkManager wyraźnie oznaczone jako rozruch bezpośrednie, nieświadome, dzięki czemu nie uruchamiają się podczas bezpośredniego rozruchu. W przyszłości udostępnimy wersję WorkManagera z obsługą bezpośredniego rozruchu. b/112665532
  • Rozwiązaliśmy problem, który powodował, że ponawiana praca nie była wykonywana. b/112604021
  • Naprawiliśmy problem z powtarzającym się okresowym wykonywaniem zadań (związane z powyższym problemem). b/112859683
  • Uznawane zasady ponowienia, gdy proces aplikacji jest już uruchomiony.
  • Poprawiono komunikaty o wyjątkach w pliku Data, wskazujące limit na 10 KB.
  • Zmniejszono maksymalną wartość z Configuration.setMaxSchedulerLimit(int) do 50, aby uwzględnić pewne opóźnienia w zakończeniu przetwarzania JobScheduler. b/112817355

16 sierpnia 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha07 z poprawkami błędów i drobnymi zmianami w interfejsie API.

Poprawki błędów

  • Naprawiono potencjalne zapytanie SQL z ujemnymi limitami, które mogło zwrócić nieograniczoną liczbę wyników.
  • Wykonanie zadania, które zostało zakończone, powoduje teraz prawidłowe anulowanie wszystkich oczekujących kopii tej pracy w innych algorytmach szeregowania. Doprowadziło to do przekroczenia limitu JobScheduler zadań. b/111569265
  • Naprawiono ConcurrentModificationException w ConstraintTracker. b/112272753
  • Adnotacje typu zwracania Data.getBooleanArray(String) i Data.getIntArray(String) zostały zmienione na @Nullable zamiast @NonNull. b/112275229

Zmiany interfejsu API

  • Rozszerzenie Worker rozszerza teraz nowe zajęcia: NonBlockingWorker. Nie będzie to miało wpływu na bieżące wykorzystanie danych. W przyszłości NonBlockingWorker stanie się w pełni obsługiwaną encją na potrzeby rozwiązań z niestandardowymi wątkami.
  • Adnotacje typu zwracania Data.getBooleanArray(String) i Data.getIntArray(String) zostały zmienione na @Nullable zamiast @NonNull. b/112275229
  • Rozszerzenia Kotlin: wycofaliśmy dyrektywę Map.toWorkData() i dodaliśmy workDataOf(vararg Pair<String, Any?>) najwyższego poziomu, aby zapewnić większą spójność z istniejącymi interfejsami API.

10 sierpnia 2018 r.

Udostępniliśmy nawigację 1.0.0-alpha05 z poprawkami błędów.

Poprawki błędów

  • Napraw błąd, który powodował nieprawidłowe działanie stosu. b/111907708
  • Napraw błąd w equals() wygenerowanych klas. b/111450897
  • Napraw błąd kompilacji w bezpiecznych argumentach. b/109409713
  • Popraw konwersję z identyfikatorów zasobów na nazwy Java b/111602491
  • Naprawa komunikatów o błędach dotyczących dopuszczalności wartości null we wtyczce Safe Args.
  • Dodaj brakujące adnotacje dotyczące wartości null.

6 sierpnia 2018 r.

Wersje Androida X cyklu życia, pokoje i strony w wersji 2.0.0-rc01. Wszystkie artefakty nie uległy zmianie od 2.0.0-beta01.

1 sierpnia 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha06 z poprawkami błędów.

Poprawki błędów

  • Zapobiegaj blokadzie bazy danych podczas planowania pracy. b/111801342
  • Usuń błąd, który powodował, że aplikacja PeriodicWork nie uruchamiała się zgodnie z harmonogramem w trybie uśpienia. b/111469837
  • Napraw warunek wyścigu podczas śledzenia ograniczeń, które powodują awarię WorkManager. googlecodelabs/android-workmanager/issues/56.
  • Przy korzystaniu z elementu WorkRequest.Builder#build() twórz unikalne elementy WorkRequest. b/111408337
  • Włączaj używanie usługi RescheduleReceiver tylko wtedy, gdy komponenty WorkRequest jej potrzebują. b/111765853

24 lipca 2018 r.

Menedżer roboczy

Udostępniliśmy usługę WorkManager 1.0.0-alpha05 z ważnymi poprawkami błędów i zmianami w logowaniu.

Zmiany interfejsu API

  • WorkManager.getInstance() jest teraz oznaczona adnotacją @NonNull zamiast @Nullable. Jeśli usługa singleton nie zostanie prawidłowo zainicjowana w przypadku inicjowania ręcznego, metoda zwróci IllegalStateException. To jest zmiana interfejsu API powodująca niezgodność.
  • Dodaliśmy nowy interfejs API Configuration.Builder.setMinimumLoggingLevel(int), który może kontrolować szczegółowość WorkManagera. Domyślnie WorkManager rejestruje zasady Log.INFO i nowsze.
  • Zmieniono podpis Data.getString(), aby nie używał już wartości domyślnej (domyślnie null). Jest to przełomowa zmiana w interfejsie API.
  • Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako @hide. Obejmuje to konstruktor Constraints, Data.toByteArray() oraz Data.fromByteArray(byte[]). Jest to przełomowa zmiana interfejsu API.

Poprawki błędów

  • WorkManager nie wykonuje już zadań w znanych przypadkach automatycznej kopii zapasowej. Mogło to spowodować wypadek. b/110564377
  • Rozwiązano podwójne harmonogramy (PeriodicWorkRequest) podczas korzystania z zasad JobScheduler. b/110798652
  • Rozwiązaliśmy problem z nieprawidłowym wykonywaniem zadań PeriodicWorkRequest po uśpieniu urządzenia. b/111469837
  • Rozwiązaliśmy problem z początkowymi opóźnieniami podczas korzystania z Firebase JobDispatcher. b/111141023
  • Naprawiliśmy niektóre potencjalne warunki wyścigu i problemy z czasem jego trwania.
  • Prawidłowo zwolniono BroadcastReceiver sekund, które nie były już potrzebne.
  • Zoptymalizowana jest wydajność zmiany harmonogramu w przypadku ponownego uruchomienia aplikacji po wymuszeniu zamknięcia.
  • Zezwolono na wywoływanie funkcji TestScheduler.setAllConstraintsMet(UUID) przed lub po umieszczeniu danego elementu WorkRequest w kolejce. b/111238024

Zmiany najważniejsze

  • WorkManager.getInstance() jest teraz oznaczona adnotacją @NonNull zamiast @Nullable.
  • Zmieniono podpis Data.getString(), aby nie używał już wartości domyślnej (domyślnie null).
  • Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako @hide. Obejmuje to konstruktor Constraints, Data.toByteArray() oraz Data.fromByteArray(byte[]).

19 lipca 2018 r.

Nawigacja 1.0.0-alpha04 i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.

Zmiany interfejsu API / działania

  • NavHostFragment będzie zawsze ustawiać bieżący fragment jako główny fragment do nawigacji, dzięki czemu menedżery fragmentów podrzędnych zostaną wyskakujące przed wystrzeleniem zewnętrznego kontrolera NavController b/111345778

Bezpieczne argumenty

  • Zmiana powodująca niezgodność: app:type została zmieniona na app:argType, aby uniknąć konfliktów z innymi bibliotekami, takimi jak ConstraintLayout 2.0.0-alpha1 b/111110548
  • Komunikaty o błędach z Bezpiecznych argumentów można teraz klikać b/111534438
  • Klasy Args potwierdzają teraz, że atrybuty NonNull w rzeczywistości nie są puste b/111451769
  • Adnotacje NonNull zostały dodane do klas NavDirections i generowanych argumentów b/111455455 b/111455456.

Poprawki błędów

  • Rozwiązaliśmy problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnych linków do miejsca docelowego fragmentu b/111515685

12 lipca 2018 r.

Nawigacja 1.0.0-alpha03 i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.

Zmiany interfejsu API / działania

  • Dodano metodę NavigationUI.setupWithNavController w przypadku paska narzędzi Toolbar b/109868820.
  • Dodano metodę NavigationUI.setupWithNavController w przypadku elementu CollapsingToolbarLayout b/110887183
  • popBackStack() zwraca teraz wartość false, gdy stos wsteczny jest pusty lub gdy podanego identyfikatora miejsca docelowego nie ma w stosie tylnym b/110893637
  • FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu przez FragmentManager, aby uniknąć wyjątków „Nie można wykonać tego działania po onSaveInstanceState” w wyjątku b/110987825

Bezpieczne argumenty

  • Zmiana znaczenia: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkimi literami w nazwach odpowiednich metod NavDirections.
    • Na przykład: DemoController.index będzie setDemoControllerIndex b/79995048
    • Na przykład: action_show_settings będzie actionShowSettings b/79642240
  • Zmiana powodująca niezgodność: argumenty są teraz domyślnie uznawane za niepuste. Aby zezwolić na null w przypadku ciągu znaków i argumentów parcelable, dodaj app:nullable="true" b/79642307
  • Możesz teraz używać parametru app:type="long" z wartościami domyślnymi w formacie „123L” b/79563966
  • Obsługiwane są teraz argumenty Parcelable z pełną i jednoznaczną nazwą klasy dla funkcji app:type. Jedyna obsługiwana wartość domyślna to "@null" b/79563966
  • Klasy Args implementują teraz funkcje equals() i hashCode() b/79642246
  • Wtyczki Safe Args można teraz stosować do projektów bibliotek b/80036553
  • Wtyczki Safe Args można teraz stosować do projektów cech b/110011752

Poprawki błędów

  • Rozwiązaliśmy problemy z nawigacją podczas korzystania z metod cyklu życia fragmentów kodu b/109916080
  • Rozwiązaliśmy problemy z wielokrotnym nawigacją po zagnieżdżonych wykresach b/110178671
  • Rozwiązaliśmy problemy z używaniem funkcji setPopUpTo z pierwszym miejscem docelowym na wykresie b/109909461
  • Rozwiązaliśmy problem, który powodował, że wszystkie wartości app:defaultValue były przekazywane jako ciągi znaków b/110710788
  • Narzędzie aapt2 w pakiecie z wtyczką Androida do obsługi Gradle 3.2 w wersji beta 01 dodaje teraz reguły zachowania reguł dla każdego atrybutu android:name w plikach XML nawigacji b/79874119
  • Usunięto wyciek pamięci podczas zastępowania domyślnego fragmentu Navigator b/110900142

2 lipca 2018 r.

Wersje Androida X cyklu życia, pokoje i strony w wersji 2.0.0-beta01.

Cykl życia

Poprawki błędów

  • Poprawiono regułę LifecycleObserver ProGuard, aby zachowywać tylko implementacje, a nie podinterfejsy b/71389427
  • Poprawiono reguły ProGuard usługi ViewModel umożliwiające zaciemnianie i zmniejszanie

Room

Zmiany interfejsu API / działania

  • Dodano RoomDatabase.Builder.setQueryExecutor(), aby umożliwić dostosowanie miejsca uruchamiania zapytań
  • Dodano obsługę RxJava2 Observable
  • Wygenerowane implementacje DAO i bazy danych są już gotowe

Poprawki błędów

  • Określ nazwę klasy/pola w polu „nie można znaleźć metody pobierania dla pola” błąd b/73334503
  • Poprawiono zgodność wsteczną RoomOpenHelper ze starszymi wersjami pokoi b/110197391.

Strona

Poprawki błędów

  • Poprawione znikanie treści w niektórych przypadkach dodawanych na początku (obiekty zastępcze wyłączone, PositionalDataSource) b/80149146
  • (Już opublikowana w wersji 1.0.1) Naprawiono awarie, które powodowały problemy z sygnaturą zdarzeń dotyczących ruchu w PagedListAdapter i AsyncPagedListDiffer. b/110711937

26 czerwca 2018 r.

Strona

Publikowanie stron 1.0.1 z pojedynczym błędem w runtime. Dla stabilności zdecydowanie zalecamy użycie 1.0.1. Udostępniona została również strona strona 1.0.1 w języku RxJava2, która jest taka sama jak 1.0.0-rc1.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że PagedListAdapter i AsyncPagedListDiffer nie sygnalizowały zdarzeń ruchu. b/110711937

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-alpha04.

Poprawki błędów

  • Gdy korzystasz z implementacji opartej na AlarmManager, harmonogramy zdarzeń typu PeriodicWorkRequest są teraz prawidłowo ustawiane.

  • Rozwiązaliśmy problem, który mógł wystąpić podczas zmiany harmonogramu wszystkich instancji roboczych po wymuszeniu zatrzymania lub ponownym uruchomieniu. b/110507716

  • Dodano adnotacje dotyczące wartości null do różnych interfejsów API WorkManager. b/110344065

  • Rejestruje nieobsłużone wyjątki, które występują podczas wykonywania instancji roboczej. b/109900862

  • Dozwolone niszczące migracje bazy danych na wypadek przywrócenia starszej wersji WorkManagera. b/74633270

  • Rozwiązaliśmy problem, który powodował awarię migracji przy tworzeniu zduplikowanych tagów niejawnych. To bardzo rzadki problem, który występuje tylko w przypadku samodzielnego użycia tego samego formatu tagu niejawnego.

19 czerwca 2018 r.

Room

Sala 1.1.1 została zwolniona. Ta wersja jest taka sama jak sala 1.1.1-rc1.

Menedżer roboczy

Zwolniono usługę WorkManager 1.0.0-alpha03.

Poprawki błędów

  • Naprawiono warunek wyścigu w implementacji opartej na AlarmManager. b/80346526.

  • Rozwiązaliśmy zduplikowane zadania występujące podczas korzystania z usługi JobScheduler po ponownym uruchomieniu urządzenia.

  • Zadania z aktywatorami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744

  • Aktualizacje dokumentacji. b/109827628, b/109758949, b/80230748

  • Naprawiono błąd, który występował podczas ponownego dodawania WorkRequest do kolejki. b/109572353.

  • Naprawiliśmy ostrzeżenia kompilatora Kotlin podczas korzystania z zależności work-runtime-ktx.

  • WorkManager używa teraz Room w wersji 1.1.1-rc1.

Zmiany interfejsu API

  • Dodano getStatusesSync(), synchroniczną wersję WorkContinuation.getStatuses().

  • Worker potrafi rozróżnić anulowanie inicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego. Metoda Worker.isStopped() zwraca wartość true, jeśli zostanie zażądany jakikolwiek przystanek. Funkcja Worker.isCancelled() zwraca wartość true, gdy zadanie zostało wyraźnie anulowane. b/79632247

  • Dodano obsługę JobParameters#getNetwork() w interfejsie API 28. Ta informacja jest udostępniana przez Worker.getNetwork().

  • Dodano zasadę Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit), aby umożliwić Ci wyegzekwowanie liczby zadań, które można wysłać do usług JobScheduler lub AlarmManager. Dzięki temu WorkManager nie będzie mógł zająć wszystkich dostępnych JobScheduler miejsc.

  • Dodano Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), który ułatwia zdefiniowanie zakresu identyfikatorów zadań JobScheduler, których może używać WorkManager. b/79996760

  • Worker.getRunAttemptCount() zwraca bieżącą liczbę uruchomień dla danego Worker. b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) umożliwia dodanie unikalnych komponentów PeriodicWorkRequest do kolejki. b/79600647

  • WorkManager.cancelAllWork() anuluje wszystkie Worker. Biblioteki zależne od WorkManager mogą wysyłać zapytania, gdy ta metoda została wywołana jako ostatnia, używając WorkManager.getLastCancelAllTimeMillis() do dodatkowego czyszczenia stanu wewnętrznego.

  • Dodano zadanie WorkManager.pruneWork(), aby usunąć ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758

Zmiany w działaniu

  • Do wszystkich elementów WorkRequest dodano tag niejawny. Jest to w pełni kwalifikowana nazwa klasy obiektu Worker. Umożliwia to usuwanie elementów WorkRequest, które nie mają komponentów tag lub gdy usługa id jest niedostępna. b/109572351

Zmiany najważniejsze

  • Nazwa Worker.WorkerResult została zmieniona na Worker.Result.

  • Worker.onStopped ma teraz dodatkowy parametr isCancelled, który jest ustawiony na true, jeśli parametr Worker został jednoznacznie anulowany.

7 czerwca 2018 r.

Nawigacja 1.0.0-alpha02 została zwolniona.

Zmiany w działaniu

  • FragmentNavigator używa teraz setReorderingAllowed(true). b/109826220

  • Argumenty Nawigacji URLDecodes analizowane z adresów URL precyzyjnych linków. b/79982454

Poprawki błędów

  • Poprawiliśmy IllegalStateException podczas wywoływania nawigacji z metod cyklu życia fragmentu. b/79632233

  • W przypadku migotania podczas korzystania z animacji nawigacja wymaga teraz Biblioteki pomocy 27.1.1. B/80160903

  • Naprawiono błąd IllegalArgumentException w przypadku użycia domyślnego NavHost="true". jako fragment podrzędny. b/79656847

  • Naprawiono błąd StackOverflowError, który występował podczas korzystania z NavDeepLinkBuilder. b/109653065

  • Naprawiono błąd IllegalArgumentException występujący podczas przechodzenia z powrotem do wykresu zagnieżdżonego. b/80453447

  • Naprawiono problem z pokrywającymi się fragmentami podczas korzystania z funkcji launchSingleTop. b/79407969

  • Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla wykresów zagnieżdżonych. b/79734195

  • Interfejs NavigationUI wyróżni właściwy element, gdy zagnieżdżony wykres jest używany jako MenuItem. b/109675998

Zmiany interfejsu API

  • Atrybut clearTask działań i powiązany z nim interfejs API w tabeli NavOptions zostały wycofane. b/80338878

  • Atrybut launchDocument działań i powiązany z nim interfejs API w tabeli NavOptions zostały wycofane. b/109806636

24 maja 2018 r.

Zwolniono usługę WorkManager 1.0.0-alpha02.

Menedżer roboczy

Poprawki błędów

  • Naprawiono NullPointerException na State.isFinished(). b/79550068

  • Rozwiązaliśmy problem, który powodował przełożenie spotkań Worker na Application.onCreate(). b/79660657

  • Rozwiązaliśmy problem, który powodował, że można było zaplanować więcej pracy, niż pozwala na to system operacyjny. b/79497378

  • Czyszczenie blokad uśpienia powiązanych z urządzeniami Worker zostało przeniesione do wątku w tle.

  • Implementacja AlarmManager jest teraz prawidłowo czyszczona po zakończeniu wszystkich oczekujących zadań.

  • Naprawiono zapytania SQL czyszczenia, które wpływały na regiony inne niż angielski. B/80065360

  • Dodano obsługę komponentów float w pliku Data. b/79443878

  • Data.Builder.putAll() zwraca teraz wystąpienie Builder. b/79699162

  • Więcej plików javadoc i poprawek w dokumentacji. b/79691663

Zmiany interfejsu API

  • Elementy typu Worker mogą zareagować na zatrzymanie. Worker.isStopped() może posłużyć do sprawdzenia, czy Worker został zatrzymany. Worker.onStopped() może służyć do wykonywania prostych operacji czyszczenia.

  • Interfejs API Worker.getTags() zwraca wartość Set tagów powiązanych z tabelą Worker.

  • Dodano przeciążenia (javax.time.Duration) dla interfejsów API, które wymagają kombinacji czasu trwania i TimeUnit. Chroni Cię @RequiresApi(26).

  • WorkManager rozszerzenia zostały przeniesione z pakietu androidx.work.ktx do pakietu androidx.work. Stare rozszerzenia są wycofane i zostaną usunięte w przyszłej wersji.

  • Interfejs Configuration.withExecutor() został wycofany. Użyj w zamian zasady Configuration.setExecutor().

16 maja 2018 r.

Zwolniono strony 1.0.0-rc1 w architekturze RxJava2 i pomieszczenie 1.1.1-rc1. Bardzo zależy nam zalecamy użycie pokoju 1.1.1-rc1 zamiast 1.1.0, jeśli używasz migracji.

Room

Usunęliśmy błąd, przez który pokój nie obsługiwał prawidłowo po migracji inicjowania b/79362399

Strona

Strona rxjava2 jest przenoszona do wersji kandydującej bez zmian w stosunku do początkowej wersji alfa.

8 maja 2018 r.

Paging 1.0, wersje alfa Navigation i WorkManager alfa, pokój 1.1, AndroidX

Zwalnianie 1.0.0 i Sala 1.1.0 zostaną zwolnione z wersjami alfa dla dwóch nowych komponentów architektury – Navigation i WorkManager.

Od czasu wprowadzenia najnowszych wersji kandydujących wersji nie wprowadzono żadnych zmian w przypisowaniu strony i pokoju.

Nowa biblioteka: Nawigacja

Nawigacja zapewnia platformę do tworzenia w aplikacji nawigacji. Ta początkowa wersja to 1.0.0-alpha01.

Nowa biblioteka: WorkManager

WorkManager upraszcza planowanie i wykonywanie gwarantowana praca w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01

AndroidX

Przenosimy komponenty architektury, które staną się częścią AndroidaX. Dotyczy to m.in. aktualizacji nazwy pakietów, nazwy artefaktów i zależności od innych bibliotek AndroidaX. Są one dostępne w wersji 2.0.0-alpha1 i używane w połączeniu z innymi Biblioteki AndroidaX.

Rozszerzenia Kotlin

ViewModel, ReactiveStreams i Sqlite (wcześniej „Baza danych” pokoju). dodaliśmy biblioteki rozszerzeń Kotlin w ramach wersji alfa AndroidaX. W moduły Navigation i WorkManager zawierają moduły -ktx. Każda z tych opcji modułów rozszerzeń można znaleźć, dodając komponenty.

2 maja 2018 r.

  • Kandydat do wydania pokoju 1.1.0
  • Sala 1.1.0-rc1 została zwolniona.

Poprawki błędów

  • Sala jest teraz zgodna z aplikacją Kotlin 1.2.40. b/78328708

19 kwietnia 2018 r.

Kandydat do wydania strony

Zwolniono strony 1.0.0-rc1 i sala 1.1.0-beta3.

Strona

Nie planujemy nowych znanych problemów ani nowych funkcji Stronokowanie wersji 1.0.0. Przejdź na wyższą wersję projektów, aby korzystać z 1.0.0-rc1 i pomóż nam ją przetestować, abyśmy mogli wysłać solidną jak skałę 1.0.0.

Ta wersja nie zawiera żadnych zmian. Ta wersja jest taka sama jak 1.0.0-beta1.

Room

Poprawki błędów

  • Naprawiono błąd kompilacji, gdy POJO w Kotlin odwołuje się do encji relacji, która zostało zdefiniowane w Javie b/78199923.

5 kwietnia 2018 r.

Została zwolniona sala 1.1.0-beta2, stronicowanie 1.0.0-beta1 i wersje RxJava 1.0.0-alpha1.

Funkcja strony będzie dostępna w wersji beta przez krótki czas, zanim stanie się kandydatką do opublikowania. W przypadku Paging 1.0 nie planujemy dalszych zmian interfejsu API, ponieważ poprzeczka w przypadku jakichkolwiek takich zmian jest bardzo wysoki.

Obsługa stronicowania w wersji alfa RxJava2 jest dostępna jako oddzielny moduł opcjonalny (android.arch.paging:rxjava2:1.0.0-alpha1) i będzie tymczasowo wyświetlać się w osobnej wersji, dopóki się nie ustabilizuje.

Ta nowa biblioteka stanowi alternatywę dla języka LivePagedListBuilder w języku RxJava2, pozwalającą Observable i Flowable, co trwa Scheduler zamiast Executor s:

Kotlin

val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
        .setFetchScheduler(myNetworkScheduler)
        .buildObservable()

Java

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Strona

Nowe funkcje

  • Pole RxPagedListBuilder zostało dodane za pomocą nowego artefaktu android.arch.paging:rxjava2.

Zmiany interfejsu API

  • Zmiany w interfejsie API mające na celu wyjaśnienie roli wykonawców w konstruktorach:

    • Nazwa setBackgroundThreadExecutor() została zmieniona na setFetchExecutor() (w: PagedList.Builder i LivePagedListBuilder)

    • Zmieniono nazwę z setMainThreadExecutor() na setNotifyExecutor() (w PagedList.Builder).

  • Poprawiono status PagedList.mCallbacks użytkownika na prywatny.

Poprawki błędów

  • Funkcja LivePagedListBuilder wyzwala wstępne wczytywanie (PagedList) określonego wykonawcy, zamiast puli wątków IO na poziomie Arch Komponenty.

  • Usunięto nieprawidłowe działanie w wewnętrznych kodach towarzyszących DataSource (stosowanych do implementacji DataSource.map, oraz ładowanie z wyłączonym symbolem zastępczym PositionalDataSource) b/77237534

Room

Poprawki błędów

  • Naprawiliśmy błąd krytyczny w implementacjach Rx Single i Maybe pokoju, w wyniku których spowoduje to powtórzenie zapytania z wyprzedzeniem, co spowoduje problemy, jeśli dodasz więcej niż 1 obserwatora na zwróconych instancjach Single lub Maybe. b/76031240

  • Funkcja RoomDatabase.clearAllTables nie VACUUM spowoduje jej wywołania. w transakcji. b/77235565

21 marca 2018 r.

Sala 1.1.0-beta1, strona docelowa 1.0.0-alpha7 i cykle życia 1.1.1 zostały zwolnione.

Room

Zmiany interfejsu API

Poprawki błędów

  • Teraz funkcja RoomDatabase.clearAllTables próbuje przywrócić miejsce z powrotem do systemu operacyjnego przez ustawienie punktu kontrolnego WAL i VACUUMuruchomienie bazy danych.

  • @RawQuery akceptuje teraz dowolne pole Pojo dla właściwości observedEntities, o ile odwołują się do co najmniej 1 encji za pomocą pól Embedded lub Relation. b/74041772

  • Stronicowanie: implementacja DataSource w pokoju prawidłowo obsługuje teraz zależności wielu tabel (takie jak relacje i złączenia). Wcześniej nie powodowały one generowania nowych wyników lub mogły się nie skompilować. b/74128314

Cykle życia

Tylko jedna mała zmiana: element android.arch.core.util.Function został przeniesiony z arch:runtime do arch:common. Dzięki temu nie wymaga żadnego czasu działania, np. w sekcji paging:common poniżej.

lifecycle:common to zależność typu lifecycle:runtime, więc ta zmiana nie wpływa bezpośrednio na lifecycle:runtime, a tylko na moduły zależne bezpośrednio od lifecycle:common, podobnie jak ma to miejsce w przypadku stronicowania.

Strona

Strona 1.0.0-alpha7 jest udostępniana wraz z cyklami życia 1.1.1. Wynik działania strony alfa7 zależy od przeniesienia klasy Function wymienionej powyżej, dlatego musisz zaktualizować zależność lifecycle:runtime do android.arch.lifecycle:runtime:1.1.1.

Określanie stron według stron alpha7 ma być planowane do wprowadzenia w wersji beta przed udostępnieniem tej funkcji.

Zmiany interfejsu API

  • Obiekty DataSource.LoadParams mają teraz konstruktor publiczny, a obiekty DataSource.LoadCallback są teraz abstrakcyjne. Umożliwia to opakowywanie klasy DataSource lub bezpośrednie testowanie funkcji DataSource za pomocą pozorowanego wywołania zwrotnego. b/72600421
  • Mappery dla DataSource i DataSource.Factory
    • map(Function<IN,OUT>) umożliwia przekształcanie, zawijanie i dekorowanie wyników wczytywanych przez DataSource.
    • mapByPage(<List<IN>,List<OUT>>) umożliwia to samo w przypadku przetwarzania wsadowego (np. jeśli elementy wczytywane z SQL muszą dodatkowo wysyłać zapytania do oddzielnej bazy danych, co można zrobić wsadowo).
  • Dodano metodę PagedList#getDataSource() jako wygodną metodę b/72611341
  • Wszystkie wycofane klasy zostały usunięte z interfejsu API, w tym pozostałości pakietu recyclerview.extensions oraz LivePagedListProvider.
  • Klasa DataSource.Factory została zmieniona z interfejsu na klasę abstrakcyjną, aby włączyć funkcje mapy.

Poprawki błędów

  • Zmiany w konstruktorach na ostateczne. b/70848565
  • Implementacja pokoju DataSource została naprawiona, aby umożliwić obsługę zapytań obejmujących wiele tabel – ta poprawka jest dostępna w pokoju 1.1.0-beta1 (patrz wyżej).
  • Naprawiliśmy błąd polegający na tym, że funkcja BoundaryCallback.onItemAtEndLoaded nie była wywoływana dla elementu PositionalDataSource, jeśli włączone były obiekty zastępcze. łączny rozmiar jest dokładną wielokrotnością rozmiaru strony.

2 marca 2018 r.

Sala 1.1.0-alpha3 została zwolniona. To ostatnia planowana wersja alfa aplikacji Pokój 1.1.0.

Zmiany interfejsu API

  • addObserver i removeObserver usługi InvalidationTracker są obecnie synchroniczne i trzeba je wywoływać w wątku innym niż interfejs UI. Zapobiega to występowaniu niektórych warunków wyścigu podczas obserwowania tabel.

  • W RoomDatabase jest nowa metoda clearAllTables(). , która skróci całą zawartość tabeli. b/63807999

  • Funkcja SupportSQLiteQuery ma teraz metodę getArgCount(), która zwraca liczbę parametrów zapytania. b/67038952

Poprawki błędów

  • Metoda @RawQuery jest teraz prawidłowo obsługiwana w przypadku zapytań pozycjonujących. b/72600425

  • Sala ma teraz prawidłowe nazwy wygenerowanych Dao klas, aby uniknąć konfliktów nazw, gdy: Co najmniej 2 interfejsy Dao to wewnętrzne klasy w tym samym pakiecie i mają o tej samej nazwie. b/73536380

  • Ogólne typy pól w Pojo s są prawidłowo interpretowane jako element rozszerzenia zajęcia. b/73534868

  • Parametry zapytania w Dao interfejsach dziedziczonych z zależności artefakty są teraz prawidłowo przeanalizowane. b/68118746,

  • Zapytania wygenerowane na potrzeby zapytań (@Relation) prawidłowo zmieniają znaczenie nazw pól. b/70925483

27 lutego 2018 r.

Umieszczanie stron 1.0.0-alpha6 w bibliotece pomocy jest udostępniane wraz z Biblioteką pomocy w wersji 27.1.0. Funkcja ListAdapter i kilka powiązanych klas zostały przeniesione z biblioteki stronicowania bezpośrednio do widoku RecyclerView. Wprowadziliśmy też kilka zmian nazw, aby ułatwić korzystanie z funkcji określonych klas. Ta wersja alfa stronicowania to prawdopodobnie ostatnia wersja, w której wprowadzono istotne zmiany powodujące niezgodność interfejsu API.

Zmiany interfejsu API

  • Klasy przeniesione do recyclerview-v7:
    • ListAdapter
  • Zmieniono nazwy klas i zostały przeniesione do wersji recyclerview-v7:
    • ListAdapterHelper -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> DiffUtil.ItemCallback
  • Zmieniono nazwy klas w środowisku wykonawczym stronicowania:
    • PagedListAdapterHelper -> AsyncPagedListDiffer

Przeniesione klasy były przydatne wraz z funkcją RecyclerView niezależnie od biblioteki stronicowania. Oznacza to, że można z nich korzystać bez względu na wersję alfa stronicowania, ale jednocześnie aplikacje korzystające z funkcji stronowania muszą zostać zaktualizowane do wersji alfa 6, a w Bibliotece pomocy 27.1.0 trzeba przejść na wersję alfa 6.

** Przewodnik po migracji dla stronicowania Alpha6: **

  • Zaktualizuj zależności stronicowania i recyklingu na android.arch.paging:runtime:1.0.0-alpha6 i com.android.support:recyclerview-v7:27.1.0
    • należy to robić jednocześnie, ponieważ element ListAdapter został przeniesiony z stronicowania do RecyclerView
  • Zaktualizuj wszystkie odniesienia ListAdapterHelper do AsyncListDiffer
    • getItem(index)/getItemCount() zostały usunięte na rzecz wzorca nazewnictwa getCurrentList().getItem(index) i getCurrentList().size(), które są bardziej szczegółowe.
  • Zaktualizuj wszystkie odniesienia ListAdapterConfig do AsyncDifferConfig
  • Zaktualizuj wszystkie odniesienia DiffCallback do DiffUtil.IttemCallback
  • Zaktualizuj wszystkie odniesienia PagedListAdapterHelper do AsyncPagedListDiffer
  • Zaktualizuj odniesienia setList() do submitList()
    • zmieniono nazwę, aby wyjaśnić asynchroniczny charakter różnic na listach

Poprawki błędów

  • Naprawiono przekazywanie nieprawidłowej pozycji początkowej do wczytywania początkowego, gdy obiekty zastępcze są wyłączone. b/73513780

15 lutego 2018 r.

Sala 1.1.0-alpha2 została zwolniona.

Nowe funkcje

  • Sala obsługuje teraz otwieranie bazy danych w trybie zapisywania z wyprzedzeniem. W tym trybie operacje zapisu nie będą już blokować zapytań odczytu. Mimo że zużywa więcej pamięci (ze względu na wiele połączeń), ten tryb jest zwykle szybciej. Domyślnie sala będzie używać WAL, jeśli urządzenie ma poziom API 16 lub nowszy. nie jest urządzeniem z małą ilością pamięci. Możesz kontrolować to zachowanie za pomocą setJournalMode() w RoomDatabase.Builder. B/67757002

  • Zespół pomocy Guawy: pokój umożliwia teraz zwracanie grupy Guava Optional<T> lub ListenableFuture<T> w zapytaniach DAO. Aby użyć aplikacji ListenableFuture<T>, musisz zaimportować guava artefakt z pokoju (android.arch.persistence.room:guava:1.1.0-alpha2).

  • Sala obsługuje teraz zwracanie wartości java.util.Optional<T> w przypadku DAO zapytań.

  • Metody interfejsu z implementacjami domyślnymi są teraz obsługiwane w @Transaction metod w DAO klasach. Działa to zarówno w przypadku Java 8, jak i Kotlin b/72416735

Poprawki błędów

  • Konstruktory z atrybutem @Relation nie będą powodować błędu kompilacji, jeśli występuje innego konstruktora, którego można użyć. b/72884434

  • W nazwach tabel ze zmianą znaczenia z użyciem ' w @Query metodach znaki mają teraz odpowiednie znaczenie dla narzędzia do śledzenia unieważnień. b/72366965

  • Sala używa teraz adnotacji Kotlin @Metadata do odczytywania struktury zajęć podczas przetwarzania adnotacji. Oznacza to, że nawet jeśli pojo jest dziedziczone z można odczytać nazwy jej parametrów konstruktora. b/67181813

  • Problem z wyszukiwaniem ścieżek migracji do niższej wersji został rozwiązany. b/72153525

  • Niestandardowe typy kolumn są teraz obsługiwane prawidłowo podczas migracji z z istniejącej bazy danych do Pokoju. b/71953987

  • Sala prawidłowo obsługuje teraz zachowywane pola boolean? w klasach Kotlin. b/72786402

22 stycznia 2018 r.

Cykle życia 1.1.0, sala 1.1.0-alpha1 i strona w języku 1.0.0-alpha5 zostały zwolnione.

Cykl życia 1.1.0

Zmiany opakowania

Dostępne są teraz nowe, znacznie mniejsze zależności:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0
.

Zmiany interfejsu API

  • Wycofane LifecycleActivity i LifecycleFragment zostały usunięte – korzystaj FragmentActivity, AppCompatActivity lub wspieraj Fragment.
  • Dodano adnotacje (@NonNull) do folderów ViewModelProviders i ViewModelStores
  • Konstruktor ViewModelProviders został wycofany – użyj jego metod statycznych bezpośrednio
  • Usługa ViewModelProviders.DefaultFactory została wycofana – używaj wersji ViewModelProvider.AndroidViewModelFactory
  • Dodano statyczną metodę ViewModelProvider.AndroidViewModelFactory.getInstance(Application) do pobierania statyczny Factory odpowiedni do tworzenia instancji ViewModel i AndroidViewModel.

Pokój 1.1.0-alfa1

Nowe funkcje

  • RawQuery: ten nowy interfejs API umożliwia metodom @Dao otrzymywanie kodu SQL jako parametru zapytania b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: nowy interfejs API w wersji RoomDatabase.Builder umożliwia dokładniejsza kontrola nad tym, z której wersji schematu początkowego są migracje destrukcyjne dozwolone (w porównaniu z funkcją zastępcząToDestructiveMigration) b/64989640
  • Sala obsługuje teraz tylko nowsze interfejsy API stronicowania (alfa-4 lub nowsze), rezygnując z obsługi wycofanych LivePagedListProvider Aby korzystać z nowej wersji alfa pokoju, musisz użyć podziału na strony alpha-4 lub nowszej i przełącz się z LivePagedListProvider na LivePagedListBuilder, jeśli jeszcze nie zostało to zrobione.

Poprawki błędów

  • Ulepszona obsługa typów Kotlin Kapt. b/69164099
  • Kolejność pól nie unieważnia już schematu. b/64290754

Strzelanie 1.0.0-alfa5

Poprawki błędów

  • Rozwiązywanie problemów z wczytywaniem strony po wyłączeniu obiektów zastępczych b/70573345
  • Dodatkowe logowanie umożliwiające śledzenie błędu IllegalArgumentException b/70360195 (i spekulacyjnej poprawki po stronie pokoju)
  • Poprawki przykładowego kodu Javadoc b/70411933, b/71467637

11 grudnia 2017 r.

Strona alpha4-1 została zwolniona. Jest to mała wersja poprawki błędu w wersji alfa 4 stronicowania.

Poprawki błędów

  • Nie sprawdzaj parametrów wywołania zwrotnego pod kątem nieprawidłowych źródeł danych. b/70353706, b/70360195

7 grudnia 2017 r.

Wprowadzamy stronę alpha4 z istotnymi zmianami i dodaniami, głównie kierowania na sieć reklamową oraz na sieć i bazę danych.

Zmiany interfejsu API

  • DataSource to teraz asynchroniczny interfejs API, który ułatwia stronicowanie bezpośrednio z sieci:

    • Pojedynczy punkt wejścia na początkowy rozmiar i dane
    • Obsługuje ponawianie próby w sieci przez zatrzymywanie połączenia zwrotnego i wysyłanie go później
    • Wywołania zwrotne Threadsafe umożliwiają ładowanie asynchroniczne w celu utworzenia jednej sieci udało się wykonać kopię zapasową PagedList w wątku UI.
    • Bardziej przejrzyste zachowanie błędów w pobliżu parametrów wczytywania początkowego
  • Nazwa TiledDataSource została zmieniona na PositionalDataSource, aby odzwierciedlić indeksowanie oparte na pozycji i to, że nie kafelują się, gdy obiekty zastępcze są wyłączono.

  • Dodano PageKeyedDataSource do obsługi kolejnych/poprzednich tokenów umieszczonych w wczyta się strona sieci. KeyedDataSource zmienił(a) nazwę na ItemKeyedDataSource, aby zrobić jest wyraźna.

  • LivePagedListBuilder i DataSource.Factory zastępują LivePagedListProvider Kreator udostępnia te same możliwości i udostępnia więcej opcji i prostsze ustawienia domyślne. Fabryka zezwala na generowanie DataSource aby był niezależny od LiveData.

  • Dodano PagedList.BoundaryCallback dla przypadku użycia bazy danych i sieci.

  • Konstruktor PagedList.Builder wykonuje teraz DataSource + PagedList.Config bardziej podobny do LivePagedListBuilder i zezwala na operator diamentowy w języka Java ani wywnioskowanych typów w Kotlin.

  • Dodano użytkownika PagedList.getConfig(), a PagedList.Config ma teraz członka publicznego usług.

  • KeyedDataSource.loadBefore() nie oczekuje już odwrócenia wyników.

  • PagedListAdapter.onCurrentListChanged() dodał(a) do nasłuchiwania aktualizacji, na których Wyświetlana jest lista PagedList.

Poprawki błędów

  • Poprawiono wyjątek IndexOutOfBoundsException w metodzie PagedListAdapter(Helper) b/67883658

1.0.0 – 6 listopada 2017 r.

Wszystkie główne komponenty (z wyjątkiem stronicowania) są teraz dostępne jako 1.0.0. To dokładnie tak samo wersję rc1 z wyjątkiem jednej zmiany w bibliotece reactivestreams.

Poprawki błędów

Kandydat do publikacji – 18 października 2017 r.

Wszystkie główne artefakty (z wyjątkiem stronicowania) są teraz w stanie 1.0.0-rc1.

Nie planujemy nowych znanych problemów ani nowych funkcji Wersja 1.0.0. Przejdź na wyższą wersję projektów, aby zacząć korzystać z usługi 1.0.0-rc1 i pomóc nam żeby przetestować ją w walce i wysłać solidny jak kamień 1.0.0.

Zmiana działania

  • W tej wersji usługa Lifecycle.Event#ON_STOP jest teraz wysyłana, gdy onSaveInstanceState ma nazwę (wcześniej była oznaczona jako CREATED) bez wysyłania ON_STOP). Więcej informacji na ten temat znajdziesz w Dokumentacja cyklu życia.

Poprawki błędów

  • Pokój:

  • Cykle życia:

    • LiveData działa prawidłowo, gdy aktywność jest częściowo objęta interfejsem API < 24. b/65665621

    • Metody OnLifecycleEvent w klasach nadrzędnych są teraz prawidłowo wywoływane lub Jeśli nie jest to możliwe, podczas kompilacji jest wyświetlane ostrzeżenie. b/63474615

    • Cykl życia zapewnia teraz WeakReference LifecycleOwner, aby uniknąć wycieku danych LifecycleOwner, jeśli cykl życia jest przechowywany w pamięci dłużej niż zwykle (to tylko środek ostrożności – należy uważać, aby nie nie wyciekły Lifecycle).

9 października 2017 r.

Zwolniono stronę alpha-3. dzięki czemu jest zgodny z beta 2 nowych cykli życia oraz Pomieszczeń.

Poprawki błędów

  • Dokumentacja ulepszonej strony pozycjonowania.

5 października 2017 r.

Wszystkie główne artefakty (z wyjątkiem stronicowania) są teraz w stanie beta 2. W tej wersji nie ma nowej wersji stronicowania.

Poprawki błędów

  • Cykle życia:

    • LiveDataReactiveStreams prawidłowo anuluje subskrypcję źródła , gdy kolumna LiveData jest nieaktywna. b/62609183
    • Zdarzenia cyklu życia są prawidłowo przekazywane do klas nadrzędnych, jeśli klasa nadrzędna pochodzi z innego modułu. b/63474615
    • LiveData prawidłowo obsługuje obserwatorów, gdy anulują oni subskrypcję tworzenia subskrypcji. b/66337741
    • FullLifecycleObserver Artefakt języka Java 8 jest teraz dostępny w drzewie zależności. b/66525578

    • W przypadku ProGuard dodaj do niego te wiersze. (Nie będzie to konieczne w przypadku wysyłki w wersji 1.0.0)

      • -keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
  • Pokój:

    • Sala wyświetla teraz błąd podczas kompilowania, gdy zwrócone dane Pojo w Metoda @Query ma pole @NonNull, które nie pasuje do żadnego z w odpowiedzi na zapytanie. Jeśli pole to @Nullable, tylko sala wyświetli ostrzeżenie. b/67115337
    • Sala weryfikuje indeksy w nowszych wersjach systemu operacyjnego. b/63132683
    • Jeśli jest ich kilka, sala domyślnie wybiera konstruktor pozbawiony argumentu w Pojo. b/67353427
    • Klucze podstawowe jednokolumnowe mogą mieć wartość Nullable, jeśli jest to Integer lub Long. b/67086876
    • Śledzenie unieważnień prawidłowo obsługuje ponowne wprowadzanie danych w trybie testowym. b/65471397
    • Sala sprawdza teraz, czy w kolumnach i tabelach nie ma nieprawidłowych znaków nazw podczas kompilacji (nieprawidłowe znaki: `, "). b/64749111

21 września 2017 r.

W tej wersji wszystkie moduły architektury mają co najmniej beta 1 (z wyjątkiem nowej biblioteki stronicowania, która jest alpha 2).

Nie planujemy kolejnych zmian interfejsu API. Mogą wystąpić nieplanowane zmiany, ale bariery zmiany interfejsu API przed stabilną wersją 1.0.0 jest bardzo duża i mało prawdopodobne, że nastąpi to.

  • Cykl życia Fragment cyklu życia zostanie usunięty przed stabilną wersją 1.0.0. Ta nie są potrzebne, gdy korzystasz z Biblioteki pomocy w wersji 26.1.0 lub nowszej.

W przeciwieństwie do fazy alfa faza beta jest planowana bardzo krótko.

Zmiany wersji

  • Rozszerzenia cyklu życia i sala są teraz beta 1
  • Formatowanie strony to teraz alpha 2
  • Brak zmian w cyklach życia (środowisko wykonawcze, powszechne) i Arch Core (wspólny). Oba te artefakty są w wersji 1.0.0 od 13 września.

Nowe artefakty

  • Cykle życia mają teraz nowy artefakt o nazwie common-java8. Ten artefakt zawiera nowy interfejs o nazwie DefaultLifecycleObserver; który ma domyślne implementacje dla wszystkich metod cyklu życia. Jeśli używasz języka Java 8, lepiej korzystać z tego artefaktu niż adnotacji.

    • Z powodu błędu w beta1 musisz dodać bezpośrednią zależność od android.arch.lifecycle:common:1.0.1, aby używać nowego artefaktu common-java8. Ten problem zostanie rozwiązany za beta2.

Zmiany opakowania

  • Element android.arch.persistence.room.db został przeniesiony do folderu android.arch.persistence.db
  • Przeniesiono użytkownika android.arch.persistence.room.db-impl i jego nazwę na android.arch.persistence.db-framework

Oba te artefakty są już zależne od pokoju, więc jeśli nie używasz ich bezpośrednio, nie musisz wprowadzać żadnych zmian w plikach kompilacji.

Zmiany interfejsu API

  • Pokój:

    • Adnotacja @ColumnInfo umożliwia teraz ustawianie metody porównywania dla kolumny. B/62007004
    • Pola transient są teraz domyślnie ignorowane, chyba że mają adnotację @ColumnInfo, @Embedded lub @Relation. b/62600692
    • Klucze główne muszą mieć adnotację @NonNull, chyba że zostaną wygenerowane automatycznie. b/64292391
        .
      • Ta zmiana może wymagać migracji schematu. Przepraszamy za niedogodności.
    • Dodaliśmy nową adnotację o wygodzie (@Transaction), która zastępuje metodę DAO i uruchamia ją w transakcji.
  • Obsługuj bazę danych SQLite:

  • Stronicowanie:

    • Ulepszona dokumentacja stron internetowych z większą liczbą przykładów i adnotacji do wątków.

Poprawki błędów

  • Pomieszczenie:
    • Wielowierszowe ciągi tekstowe Kotlin w metodach @Query są obsługiwane prawidłowo. b/65809374
  • Stronicowanie:
    • Artefakt strony nie zależy już od jednostki junit. b/65690261

1.0.0 alfa 9-1 – 13 września 2017 r.

To duża wersja, w której podstawowe artefakty cyklu życia (wspólne środowisko wykonawcze) i rdzenie łukowe (wspólne) do wersji stabilnej 1.0.0.

Oprócz tej zmiany obsługa Biblioteki pomocy w wersji 26.1.0 jest teraz oparta na tych bibliotekach. AppCompatActivity i Support Fragment. zaimplementujemy interfejs LifecycleOwner.

Ta wersja korzysta również z biblioteki pomocy 26.1.0, aby korzystać z nowej integracji.

Nowa biblioteka: stronicowanie

Ta wersja zawiera też nową bibliotekę o nazwie Paging, która umożliwia łatwe ładowanie dużych w razie potrzeby we fragmentach danych RecyclerView. Paging jest dostępny jako alpha1 i ma własny cykl premierowy.

Zmiany interfejsu API

Poprawki błędów

  • Wygenerowane klasy są teraz opatrzone adnotacją @Generated, jeśli aplikacja ma adnotację w ścieżce klasy. b/35754819

  • Usunięto błąd porównania obserwatora w narzędziu MediatorLiveData. b/64413274

  • Zapytania SQLite WITH są teraz obsługiwane w przypadku zapytania [LiveData]. [ref-LiveData] b/62510164

  • Naprawiono błąd, który powodował, że nieprawidłowa lista wysyłała nieprawidłowe informacje, jeśli była ich więcej niż 1 tabela. obserwowane zjawisko. b/65099281

  • Naprawiono błąd, który powodował, że pokój generował różne pliki w systemie Windows. b/64470691

  • Usługa LifecycleObservers w pakiecie głównym jest teraz obsługiwana. b/62310817

1.0.0 alfa 9 – 16 sierpnia 2017 r.

Poprawki błędów.

  • Naprawiliśmy błąd w LiveData, który powodował, że drugi parametr Observer był ignorowany, gdy usunięto pierwszy z nich z metody onChanged. b/64285805

1.0.0 alfa 8 – 1 sierpnia 2017 r.

Zmiany w działaniu

  • Do kolumn typów podstawowych lub kolumn dodano ograniczenie NOT NULL adnotacja NonNull. Zmienia to strukturę więc jeśli używasz Komponentów architektury w wersji alfa 7 lub starszej, musisz wdrożyć migrację, jeśli chcesz zachować dane, lub fallbackToDestructiveMigration(). b/62007004

Zmiany interfejsu API

1.0.0 Alpha 7 – 26 lipca 2017 r.

Poprawki błędów.

  • Naprawiliśmy krytyczny błąd w metodzie LifecycleRegistry removeObserver, który powodował błędy odczytu LifecycleObserver.

  • Poprawiono parametr invalidationTracker w przypadku niestandardowych baz danych b/63162311

1.0.0 alfa 6 – 25 lipca 2017 r.

Zmiany w działaniu

  • Zmieniła się kolejność wywołań LifecycleObserver. Wcześniej obserwatorzy byli zawsze wywoływani w kolejności, w jakiej zostali dodani: jeśli zdarzenie observer1 zostało dodane przed observer2, otrzyma zdarzenie ON_CREATE i wszystkie pozostałe zdarzenia przed observer2. Nie dotyczy to już zdarzeń zniszczenia – w ich przypadku obserwatorzy są wywoływani w odwrotnej kolejności dodawania. Zatem obecne działanie jest takie: jeśli zdarzenie observer1 zostało dodane przed observer2, to ON_CREATE jest najpierw wysyłane do observer1, a potem do observer2 (to samo dzieje się w przypadku ON_START i ON_RESUME), ale zdarzenie ON_PAUSE jest wysyłane najpierw do observer2, a dopiero potem do observer1 (to samo w przypadku ON_STOP i ON_DESTROY).

  • Jeśli brakuje migracji, pokój zgłasza wyjątek. Wcześniej usługa Room po prostu czyściła bazę danych, ale teraz ulegała awarii. Deweloperzy mogą wyrazić zgodę na proces czyszczenia, wywołując interfejs API kreatora. b/63872392

Zmiany interfejsu API

  • Metoda fallbackToDestructiveMigration() została dodana do: RoomDatabase.Builder do: wyczyścić bazę danych, jeśli nie ma migracji. b/63872392

  • Komponenty architektury zależą teraz od biblioteki pomocy w wersji 26.0.0

Poprawki błędów.

  • Poprawiono obsługę elementu @Relation w tagu @Embedded. b/63736065

  • Naprawiono migracje testowe dotyczące tabel z automatycznie zwiększanym kluczem podstawowym. b/63393618

  • Teraz @Zapytania, które uruchamiają zapytania DELETE lub AKTUALIZUJ, prawidłowo otrzymują argumenty. b/63872538

  • Obecnie modele widoku danych są zachowywane, gdy fragment właściciela znajduje się w stosie wstecznym, a zmiana konfiguracji następuje 2 razy. b/38445801

1.0.0 alfa 5 – 18 lipca 2017 r.

Zmiany interfejsu API

Aby dodać obsługę RxJava do pokoju, musisz korzystać z android.arch.persistence.room:rxjava2 artefaktu.

Poprawki błędów.

  • Naprawiono @Delete zapytań bez parametrów. b/63608092

  • Naprawiono sprawdzanie rodzaju pomieszczeń dla pobierających i ustalających. b/63733651

1.0.0 alfa 4 – 11 lipca 2017 r.

Zmiany interfejsu API

  • Dodano nową wygodną metodę (runInTransaction()) do RoomDatabase.

  • Metody @Insert, @Delete i @Update mogą teraz mieć parametry pochodzące z różnych typów encji. b/62682405

Poprawki błędów

  • Naprawiliśmy obsługę polecenia byte[] w metodach @Dao. b/62460045

  • Sprawdzanie migracji w pokoju korzysta teraz z porównania bez rozróżniania wielkości liter. b/62875382

  • Naprawiono konfigurację ProGuard na potrzeby artefaktu Cykle życia. b/62113696

1.0.0 alfa 3 – 15 czerwca 2017 r.

Zmiany interfejsu API

  • @OnLifecycleEvent obsługuje teraz tylko 1 parametr zdarzenia. To zmiana w ramach przygotowań do obsługi języka Java 8, dzięki której będziemy mogli z metodami domyślnymi w przyszłości. W związku z tą zmianą metody z adnotacjami @OnLifecycleEvent(ON_ANY) mogą otrzymywać drugi parametr typu Event (pierwszy parametr to LifecycleOwner). Szczegółowe informacje znajdziesz w dokumentacji cyklu życia.

  • Zajęcia LifecycleActivity i LifecycleFragment są przenoszone do artefaktu android.arch.lifecycle:extensions.

  • MigrationTestHelper otrzymuje instancję Instrumentation zamiast Context, aby móc odczytać schemat z zasobów testowych i utworzyć dla bazy danych w kontekście aplikacji.

  • Adnotacje @Insert, @Delete i @Update w metodzie @DAO można teraz mieć Iterable jako typ parametru. b/62259820

Poprawki błędów

  • Zastąpione metody ze zdarzeniami cyklu życia nie są już wywoływane wielokrotnie.

  • Wiele parametrów IN jest teraz obsługiwanych prawidłowo. b/62608681,

  • Abstrakcyjne klasy DAO mogą teraz mieć konstruktor odbierający żądanie @Database instancji. b/38488747

  • Elementy DAO mogą teraz mieć superklasę/interfejs z parametrami typu. b/62103620

1.0.0 alfa 2 – 2 czerwca 2017 r.

Zmiany interfejsu API

Poprawki błędów

  • Chroń pliki na potrzeby cykli życia. (B/62113696)
  • Utrata danych w przypadku konwersji typu. (B/62100716)
  • Zezwalaj na zwracanie wartości Long[] z zapytań @Insert.

1.0.0 alfa 1 – 17 maja 2017 r.

MinSDK: 14

Zalecenia ogólne

  • Przeprowadziliśmy wiele testów przed uruchomieniem usługi, ale komponenty architektury znajdują się obecnie w fazie alfa. Jeśli tworzysz aplikację produkcyjną, pamiętaj, że interfejs API zmieni się przed wersją 1.0 i może nie być w pełni rozbudowany. Jeśli nie czujesz się komfortowo debugować problemy w używanych bibliotekach, zalecamy wypróbowanie komponentów architektury najpierw w innych projektach.

  • Nie zalecamy wszystkim dzisiaj migracji. Przygotujemy przewodnik po migracji dotyczący komponentów architektury w wersji 1.0.

Znane ograniczenia i problemy