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
zamiast1.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
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 metodamiNavigationUI
. b/120104424 AppBarConfiguration
umożliwia teraz ustawienie kreacji zastępczejOnNavigateUpListener
. instancja, która zostanie wywołana po zwróceniunavController.navigateUp()
false
. b/79993862 b/120690961
Zmiany najważniejsze
- Gdy używasz:
<argument>
i elementuargType="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 metodamisetup
. DodajmenuCategory="secondary"
do Twojego urządzeniaMenuItem
, aby uniknąć problemów z tylnym stosem. Aosp/852869- Metody
fromBundle()
wygenerowanych klasArgs
mają teraz wartość inną niż nullBundle
zamiastBundle
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ętrznejListenableWorker
. 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ętrznejListenableWorker
.
6 grudnia 2018 r.
Strona
Strona 2.1.0-rc01
została zwolniona bez zmian od 2.1.0-beta01
.
Nawigacja
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 kolumnieandroid: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
naOnDestinationChangedListener
b/118670572 - Funkcja
OnDestinationChangedListener
przekazuje teraz równieżBundle
argumentów Aosp/837142 - Atrybuty
app:clearTask
iapp:launchDocument
oraz powiązane z nimi atrybuty Liczba usuniętych metod: . Użyj funkcjiapp:popUpTo
jako pierwiastka wykresu, aby: usuń wszystkie miejsca docelowe ze stosu wstecznego. b/119628354 ActivityNavigator.Extras
używa teraz wzorcaBuilder
i dodaje możliwość ustaw dowolne flagi:Intent.FLAG_ACTIVITY_
Aosp/828140- Zmiana nazwy użytkownika z
NavController.onHandleDeepLink
nahandleDeepLink
Aosp/836063 - Wiele klas i metod, które nie są przeznaczone do podklasyfikacji, na przykład
NavOptions
,NavInflater
,NavDeepLinkBuilder
iAppBarConfiguration
, zostałyfinal
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 doFragmentFactory
. b/119054429 - Konstruktor dla
NavGraphNavigator
nie wymaga jużContext
Aosp/835340 - NavigatorProvider to teraz
za pomocą klasy, a nie interfejsu. Wartość
NavigatorProvider
zwrócona przezgetNavigatorProvider()
. nie zmieniła swojego działania. Aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń do firmynavigate()
naNavigator
. Aosp/830663- Znaczna refaktoryzacja tekstu
Navigator
eliminująca potrzebę użyciaOnNavigatorNavigatedListener
i zamiast tego funkcjanavigate
zwróciła przekierowany do niej elementNavDestination
. - Instancje
Navigator
nie mogą już wysyłać zdarzeń pop doNavController
. 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
, przedstawiaRxWorker
. To jest zasób typuListenableWorker
, 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
wResult
.Result
jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
.ListenableFuture
ma teraz wynikResult
zamiastPayload
. Elementy typuWorker
nie mają metod pobierania ani metod ustawiania danych wyjściowych dla danych wyjściowychData
. To niezwykła zmiana. - Dodano
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
iConstraints.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()
iListenableFuture.await()
Kotlin. - Nazwa
Operation.getException()
została zmieniona naOperation.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
iOneTimeWorkRequest
, aby usprawnić interfejs API. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znacznikiArrays.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; metodycombine
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łudzeobserveForever
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
zCANCELLED
State
w okresieListenableWorker.onStopped()
. - Traktuj
null
Result
jako błędy w procesieListenableWorker
. 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
wResult
.Result
jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
.ListenableFuture
ma teraz wynikResult
zamiastPayload
. Elementy typuWorker
nie mają metod pobierania ani metod ustawiania danych wyjściowych dla danych wyjściowychData
. - Dodano metody rozszerzeń
Operation.await()
iListenableFuture.await()
Kotlin. - Nazwa
Operation.getException()
została zmieniona naOperation.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
iOneTimeWorkRequest
, aby usprawnić interfejs API. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znacznikiArrays.asList(...)
. Nadal jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
wariantu. przedstawiał mylący interfejs API; metodycombine
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 wFtsOptions
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ą terazListenableFuture
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żeniaIN
. 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ądzenieCoroutineWorker
.- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Nazwy wszystkich odpowiednich wariantów metodygetStatus
zostały zmienione na odpowiednich wariantów (getWorkInfo
). To niezwykła zmiana. - Funkcja
ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego wskazującego, czyWorkRequest
został anulowany.WorkManager
nie ma już tego rozróżnienia. To niezwykła zmiana. - Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.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()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. To niezwykła zmiana. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. To niezwykła zmiana. - Konstruktor dla
WorkStatus
nie jest już częścią publicznego interfejsu API. To niezwykła zmiana. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały zmienione naConfiguration.getMinJobSchedulerId()
iConfiguration.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 unikalnychOneTimeWorkRequest
bez konieczności tworzeniaWorkContinuation
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. To niezwykła zmiana. - Żadne warianty atrybutu
enqueue
nie akceptują już zmiennych typuWorkRequest
. To niezwykła zmiana. Zamiast tego używaj kolekcji. Aby zmodyfikować istniejący kod, możesz użyć poleceniaArrays.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łądIllegalStateException
. To niezwykła zmiana.
Poprawki błędów
- Elementy
WorkRequest.Builder
w artefaktiework-runtime-ktx
używają terazListenableWorker
. 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 naWorkInfo
. Nazwy wszystkich odpowiednich wariantów metodygetStatus
zostały zmienione na odpowiednich wariantów (getWorkInfo
). - Funkcja
ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego wskazującego, czyWorkRequest
został anulowany.WorkManager
nie ma już tego rozróżnienia. - Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.work.testing
. - Konfigurujący w domenie
Constraints
nie są już częścią publicznego interfejsu API. - Funkcje
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. - Konstruktor dla
WorkStatus
nie jest już częścią publicznego interfejsu API. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały zmienione naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. - Żadne warianty atrybutu
enqueue
nie akceptują już zmiennych typuWorkRequest
. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje teraz błądIllegalStateException
.
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.
Nawigacja
Udostępniliśmy nawigację 1.0.0-alpha07
z poprawkami błędów i zmianami w interfejsie API.
Nowe funkcje
- Nowa konfiguracja AppBarConfiguration pozwala określić, które miejsca docelowe są uważane za najwyższego poziomu miejsca docelowe. Zobacz zaktualizowaną dokumentację . b/117333663
- Możesz teraz przekazywać argumenty do początkowego miejsca docelowego grafu b/110300470
- Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, łącznikami i znakami plusa. b/112806402
Zmiany najważniejsze
- Moduł
navigation-testing-ktx
został złożony donavigation-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 aplikacjiPagedList.Config.Builder
- Dodano aplikację
androidx.paging.PagedList()
jako alternatywę dla usługi Kotlin dla aplikacjiPagedList.Builder
- Dodano aplikację
DataSourceFactory.toLiveData()
jako alternatywę dla usługi Kotlin dla aplikacjiLivePagedListBuilder
- Dodano
DataSourceFactory.toObservable()
itoFlowable()
jako alternatywne wersje Kotlin dla aplikacjiRxPagedListBuilder
- 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 terazIndexOutOfBoundsException
, 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 konstruktorWorker
. Jest to przełomowa zmiana interfejsu API. - Nazwa
NonBlockingWorker
została zmieniona naListenableWorker
, 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 zaktualizujListenableFuture
. Referencyjne implementacje komponentówListenableFuture
znajdziesz w pakiecieFutures
walpha02
(patrz sekcjaWorkManager
poniżej). - Komponent
Worker
rozszerza zakresListenableWorker
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
doListenableWorker
. - Wkrótce udostępnimy implementacje referencyjne dla systemów
ListenableWorker
, które korzystają z współrzędnych Kotlin (po opublikowaniu wersji stabilnych) i RxJava2.
- Funkcja
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały połączone w klasę abstrakcyjną o nazwieWorkerFactory
. Implementacja daje pewność, że w przypadku każdej instancjiWorkerFactory
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()
iWorkContinuation.synchronous()
oraz wszystkie powiązane metody. DodanoListenableFuture<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łoWorkManager.enqueue()
zostało użyte do zwrócenia wartościvoid
; zwraca terazListenableFuture<Void>
. Możesz wywołaćListenableFuture.addListener(Runnable, Executor)
lubListenableFuture.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 umowyFuture
. - Aby zachować spójność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i zmieniliśmy nazwę tych, które zwracały wartośćLiveData
, na „LiveData” jako część nazwy (na przykładgetStatusesByIdLiveData(UUID)
). Jest to przełomowa zmiana w interfejsie API.
- Teraz możesz synchronicznie pobierać i obserwować je za pomocą funkcji
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ącexclude '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 1WorkContinuation
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 konstruktorWorker
. - Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały połączone w klasę abstrakcyjną o nazwieWorkerFactory
. - Usunięto:
WorkManager.synchronous()
iWorkContinuation.synchronous()
. - Metody
WorkManager.getStatus*()
zwracają terazListenableFuture
.WorkManager.getStatus*LiveData()
zwracaLiveData
s.
Transakcje terminowe
Zostaje opublikowana transakcja terminowa 1.0.0-alpha02
.
Zmiany interfejsu API
- Deweloperzy mogą teraz używać
ResolvableFuture
iAbstractResolvableFuture
jako prostych, betonowych implementacji środowiskaListenableFuture
.
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 RxCompletable
,Single<T>
iMaybe<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 wersjiRoomDatabase.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/62334005fallbackToDestructiveMigrationOnDowngrade
: to nowy interfejs API wRoomDatabase.Builder
, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję. b/110416954ignoredColumns
: 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
imDatabase
w pokojuRoomDatabase
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.
Nawigacja
Udostępniliśmy nawigację 1.0.0-alpha06
z poprawkami błędów i zmianami w interfejsie API.
Nowe funkcje
- Przejścia udostępnionych elementów dla fragmentów i miejsc docelowych aktywności są teraz obsługiwane b/79665225. Więcej informacji znajdziesz w artykule Implementowanie nawigacji za pomocą komponentu architektury nawigacji.
- Wybranie elementu w widoku
NavigationView
spowoduje teraz zamknięcie planszy dolnej b/112158843
Zmiany interfejsu API
- Zmiana powodująca niezgodność: metoda Nawigator
navigate()
przyjmuje teraz parametrNavigator.Extras
. - Metoda
getGraph()
NavControllera to terazNonNull
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 elementuWorker
. 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ącWorkerFactory
wWorkManager.Configuration
. Fabryka kreacji zastępczej toDefaultWorkerFactory
, która odpowiada działaniu poprzednich wersji WorkManagera.- Domyślne konstruktory dla
Worker
iNonBlockingWorker
są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)
) i wywołajsuper(Context, WorkerParameters)
; w kolejnych wersjach WorkManager zostanie usunięty domyślny konstruktor.
- Domyślne konstruktory dla
- 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 stronyNonBlockingWorker
. - Dodaj możliwość aktywowania zadań czasowych w
TestDriver
przez funkcjeTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Zmiany najważniejsze
- Domyślne konstruktory
Worker
iNonBlockingWorker
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 przetwarzaniaJobScheduler
. 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
wConstraintTracker
. b/112272753 - Adnotacje typu zwracania
Data.getBooleanArray(String)
iData.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ściNonBlockingWorker
stanie się w pełni obsługiwaną encją na potrzeby rozwiązań z niestandardowymi wątkami. - Adnotacje typu zwracania
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229 - Rozszerzenia Kotlin: wycofaliśmy dyrektywę
Map.toWorkData()
i dodaliśmyworkDataOf(vararg Pair<String, Any?>)
najwyższego poziomu, aby zapewnić większą spójność z istniejącymi interfejsami API.
10 sierpnia 2018 r.
Nawigacja
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 elementyWorkRequest
. b/111408337 - Włączaj używanie usługi
RescheduleReceiver
tylko wtedy, gdy komponentyWorkRequest
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óciIllegalStateException
. 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 zasadyLog.INFO
i nowsze. - Zmieniono podpis
Data.getString()
, aby nie używał już wartości domyślnej (domyślnienull
). Jest to przełomowa zmiana w interfejsie API. - Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
orazData.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 zasadJobScheduler
. 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 elementuWorkRequest
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ślnienull
). - Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
orazData.fromByteArray(byte[])
.
19 lipca 2018 r.
Nawigacja
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 naapp: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
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ędziesetDemoControllerIndex
b/79995048 - Na przykład:
action_show_settings
będzieactionShowSettings
b/79642240
- Na przykład:
- 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()
ihashCode()
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 wPagedListAdapter
iAsyncPagedListDiffer
. 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
iAsyncPagedListDiffer
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ń typuPeriodicWorkRequest
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 wersji1.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. MetodaWorker.isStopped()
zwraca wartośćtrue
, jeśli zostanie zażądany jakikolwiek przystanek. FunkcjaWorker.isCancelled()
zwraca wartośćtrue
, gdy zadanie zostało wyraźnie anulowane. b/79632247Dodano 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ługJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie będzie mógł zająć wszystkich dostępnychJobScheduler
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/79996760Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień dla danegoWorker
. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia dodanie unikalnych komponentówPeriodicWorkRequest
do kolejki. b/79600647WorkManager.cancelAllWork()
anuluje wszystkieWorker
. Biblioteki zależne odWorkManager
mogą wysyłać zapytania, gdy ta metoda została wywołana jako ostatnia, używającWorkManager.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 obiektuWorker
. Umożliwia to usuwanie elementówWorkRequest
, które nie mają komponentówtag
lub gdy usługaid
jest niedostępna. b/109572351
Zmiany najważniejsze
Nazwa
Worker.WorkerResult
została zmieniona naWorker.Result
.Worker.onStopped
ma teraz dodatkowy parametrisCancelled
, który jest ustawiony natrue
, jeśli parametrWorker
został jednoznacznie anulowany.
7 czerwca 2018 r.
Nawigacja 1.0.0-alpha02
została zwolniona.
Nawigacja
Zmiany w działaniu
FragmentNavigator
używa terazsetReorderingAllowed(true)
. b/109826220Argumenty 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/79632233W 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/79656847Naprawiono błąd
StackOverflowError
, który występował podczas korzystania z NavDeepLinkBuilder. b/109653065Naprawiono błąd
IllegalArgumentException
występujący podczas przechodzenia z powrotem do wykresu zagnieżdżonego. b/80453447Naprawiono problem z pokrywającymi się fragmentami podczas korzystania z funkcji
launchSingleTop
. b/79407969Nawigacja 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 tabeliNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
działań i powiązany z nim interfejs API w tabeliNavOptions
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
naState.isFinished()
. b/79550068Rozwiązaliśmy problem, który powodował przełożenie spotkań
Worker
naApplication.onCreate()
. b/79660657Rozwią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 plikuData
. b/79443878Data.Builder.putAll()
zwraca teraz wystąpienieBuilder
. b/79699162Wię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, czyWorker
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 iTimeUnit
. Chroni Cię@RequiresApi(26)
.WorkManager
rozszerzenia zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia są wycofane i zostaną usunięte w przyszłej wersji.Interfejs
Configuration.withExecutor()
został wycofany. Użyj w zamian zasadyConfiguration.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 artefaktuandroid.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 nasetFetchExecutor()
(w:PagedList.Builder
iLivePagedListBuilder
)Zmieniono nazwę z
setMainThreadExecutor()
nasetNotifyExecutor()
(wPagedList.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 implementacjiDataSource.map
, oraz ładowanie z wyłączonym symbolem zastępczymPositionalDataSource
) b/77237534
Room
Poprawki błędów
Naprawiliśmy błąd krytyczny w implementacjach Rx
Single
iMaybe
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 instancjachSingle
lubMaybe
. b/76031240Funkcja 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
- Z opinii wynika, że interfejs
@RawQuery
nie akceptuje już przekazywaniaString
jako parametru zapytania. Musisz użyć SupportSQLiteQuery. Aby dowiedzieć się, jak łatwo utworzyć instancję SupportSQLiteQuery z obsługą argumentów, zapoznaj się z artykułem SimpleSQLiteQuery. - Metoda fallbackToDestructiveMigrationFrom RoomDatabase.Builder akceptuje teraz
vararg int
zamiastvararg Integer
.
Poprawki błędów
Teraz funkcja RoomDatabase.clearAllTables próbuje przywrócić miejsce z powrotem do systemu operacyjnego przez ustawienie punktu kontrolnego WAL i
VACUUM
uruchomienie bazy danych.@RawQuery
akceptuje teraz dowolne pole Pojo dla właściwościobservedEntities
, o ile odwołują się do co najmniej 1 encji za pomocą pólEmbedded
lubRelation
. b/74041772Stronicowanie: 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 obiektyDataSource.LoadCallback
są teraz abstrakcyjne. Umożliwia to opakowywanie klasyDataSource
lub bezpośrednie testowanie funkcjiDataSource
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 przezDataSource
.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
orazLivePagedListProvider
. - 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 elementuPositionalDataSource
, 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
iremoveObserver
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/63807999Funkcja
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/72600425Sala ma teraz prawidłowe nazwy wygenerowanych
Dao
klas, aby uniknąć konfliktów nazw, gdy: Co najmniej 2 interfejsyDao
to wewnętrzne klasy w tym samym pakiecie i mają o tej samej nazwie. b/73536380Ogólne typy pól w
Pojo
s są prawidłowo interpretowane jako element rozszerzenia zajęcia. b/73534868Parametry 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
icom.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
doAsyncListDiffer
getItem(index)
/getItemCount()
zostały usunięte na rzecz wzorca nazewnictwagetCurrentList().getItem(index)
igetCurrentList().size()
, które są bardziej szczegółowe.
- Zaktualizuj wszystkie odniesienia
ListAdapterConfig
doAsyncDifferConfig
- Zaktualizuj wszystkie odniesienia
DiffCallback
doDiffUtil.IttemCallback
- Zaktualizuj wszystkie odniesienia
PagedListAdapterHelper
doAsyncPagedListDiffer
- Zaktualizuj odniesienia
setList()
dosubmitList()
- 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()
wRoomDatabase.Builder
. B/67757002Zespół pomocy Guawy: pokój umożliwia teraz zwracanie grupy Guava
Optional<T>
lubListenableFuture<T>
w zapytaniachDAO
. Aby użyć aplikacjiListenableFuture<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 przypadkuDAO
zapytań.Metody interfejsu z implementacjami domyślnymi są teraz obsługiwane w
@Transaction
metod wDAO
klasach. Działa to zarówno w przypadkuJava 8
, jak iKotlin
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/72884434W nazwach tabel ze zmianą znaczenia z użyciem
'
w@Query
metodach znaki mają teraz odpowiednie znaczenie dla narzędzia do śledzenia unieważnień. b/72366965Sala 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/67181813Problem 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
iLifecycleFragment
zostały usunięte – korzystajFragmentActivity
,AppCompatActivity
lub wspierajFragment
. - Dodano adnotacje (
@NonNull
) do folderówViewModelProviders
iViewModelStores
- Konstruktor
ViewModelProviders
został wycofany – użyj jego metod statycznych bezpośrednio - Usługa
ViewModelProviders.DefaultFactory
została wycofana – używaj wersjiViewModelProvider.AndroidViewModelFactory
- Dodano statyczną metodę
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
do pobierania statycznyFactory
odpowiedni do tworzenia instancjiViewModel
iAndroidViewModel
.
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/71458963fallBackToDestructiveMigrationsFrom
: nowy interfejs API w wersjiRoomDatabase.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 stronyalpha-4
lub nowszej i przełącz się zLivePagedListProvider
naLivePagedListBuilder
, 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 naPositionalDataSource
, 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ę naItemKeyedDataSource
, aby zrobić jest wyraźna.LivePagedListBuilder
iDataSource.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 generowanieDataSource
aby był niezależny odLiveData
.Dodano
PagedList.BoundaryCallback
dla przypadku użycia bazy danych i sieci.Konstruktor
PagedList.Builder
wykonuje terazDataSource
+PagedList.Config
bardziej podobny doLivePagedListBuilder
i zezwala na operator diamentowy w języka Java ani wywnioskowanych typów w Kotlin.Dodano użytkownika
PagedList.getConfig()
, aPagedList.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
- Narzędzie
LiveDataReactiveStreams
prawidłowo implementuje teraz zgodnie ze specyfikacją Strumienie reaktywne. b/67999342
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, gdyonSaveInstanceState
ma nazwę (wcześniej była oznaczona jakoCREATED
) bez wysyłaniaON_STOP
). Więcej informacji na ten temat znajdziesz w Dokumentacja cyklu życia.
Poprawki błędów
Pokój:
- Pokój jest teraz zależny od najnowszego artefaktu xerialnego, który naprawia
OutOfMemory
podczas kompilacji. b/62473121 - Metody usługi
Query
można teraz dodawać za pomocą adnotacji@Transaction
. Więcej informacji znajdziesz w dokumentach referencyjnych na stronie@Transaction
. b/65112315 StringUtil
zajęcia w pokoju zostały usunięte publicznie API (nigdy nie był to publiczny interfejs API).
- Pokój jest teraz zależny od najnowszego artefaktu xerialnego, który naprawia
Cykle życia:
LiveData
działa prawidłowo, gdy aktywność jest częściowo objęta interfejsem API < 24. b/65665621Metody
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/63474615Cykl ż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łyLifecycle
).
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 kolumnaLiveData
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/66525578W 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 toInteger
lubLong
. 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
- Sala wyświetla teraz błąd podczas kompilowania, gdy zwrócone dane Pojo w
Metoda
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 wersji26.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ść odandroid.arch.lifecycle:common:1.0.1
, aby używać nowego artefaktucommon-java8
. Ten problem zostanie rozwiązany zabeta2
.
- Z powodu błędu w
Zmiany opakowania
- Element
android.arch.persistence.room.db
został przeniesiony do folderuandroid.arch.persistence.db
- Przeniesiono użytkownika
android.arch.persistence.room.db-impl
i jego nazwę naandroid.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:
- Zmiany interfejsu API w konfiguracji bazy danych. b/65349673 b/65499876
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
- Wielowierszowe ciągi tekstowe Kotlin w metodach
- 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
- Te klasy są wycofane i zostaną usunięte w przyszłej wersji:
Poprawki błędów
Wygenerowane klasy są teraz opatrzone adnotacją
@Generated
, jeśli aplikacja ma adnotację w ścieżce klasy. b/35754819Usunię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/62510164Naprawiono 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, lubfallbackToDestructiveMigration()
. b/62007004
Zmiany interfejsu API
- Rozszerzenie SupportSQLiteProgram rozszerza teraz zakres AutoCloseable. b/63131997
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 przedobserver2
, otrzyma zdarzenieON_CREATE
i wszystkie pozostałe zdarzenia przedobserver2
. 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 zdarzenieobserver1
zostało dodane przedobserver2
, toON_CREATE
jest najpierw wysyłane doobserver1
, a potem doobserver2
(to samo dzieje się w przypadkuON_START
iON_RESUME
), ale zdarzenieON_PAUSE
jest wysyłane najpierw doobserver2
, a dopiero potem doobserver1
(to samo w przypadkuON_STOP
iON_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/63872392Komponenty 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
Do
RoomDatabase.Builder
dodano nową metodę wywołania zwrotnego, która pozwala obserwować, kiedy baza danych jest tworzona lub otwierana. b/62699324@Query może teraz zwracać kod RxJava
Maybe
lubSingle
. b/62231019
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/63608092Naprawiono 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/62460045Sprawdzanie 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 typuEvent
(pierwszy parametr toLifecycleOwner
). Szczegółowe informacje znajdziesz w dokumentacji cyklu życia.Zajęcia
LifecycleActivity
iLifecycleFragment
są przenoszone do artefaktuandroid.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/38488747Elementy
DAO
mogą teraz mieć superklasę/interfejs z parametrami typu. b/62103620
1.0.0 alfa 2 – 2 czerwca 2017 r.
Zmiany interfejsu API
Wywołanie zwrotne InvalidationTracker otrzymuje teraz listę zmienionych nazw tabel. (B/38468740)
Ograniczono powierzchnię interfejsu API klasy SupportSQLiteDatabase. (b/38481640)
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
- Cykl życia
Fragment
iActivityCompat
w Bibliotece pomocy nie implementują jeszcze interfejsuLifecycleOwner
. Zostaną one przywrócone, gdy komponenty architektury osiągną wersję 1.0.0.