15 stycznia 2019 r.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-beta02
. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono przypadek skrajny, w którym na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) okresowa praca mogła być wykonywana więcej niż raz w danym okresie. b/121998363
- Usunięto błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/121345393 - Naprawiliśmy błędne wykonywanie zadań, gdy ograniczenia nie były spełnione na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub niższym. b/122578012
- Zoptymalizowana obsługa zadań wykonywanych w celu przyspieszenia w niektórych przypadkach skrajnych. b/122358129
- Dodaliśmy zmianę, która uwzględniała potencjalne warunki wyścigu w wielu wystąpieniach obiektu
LiveData
używanego przez WorkManager. - Przeniesiono do użycia zależności
Room
1.1.1
zamiast1.1.1-rc01
. Te wersje są identyczne. b/122578011
19 grudnia 2018 r.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-beta01
. Ta wersja nie wprowadza żadnych zmian w interfejsie API. Od tej pory aplikacja WorkManager powinna pozostać stabilna do czasu następnej wersji, chyba że wystąpi problem krytyczny. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Elementy podrzędne, które zostały wcześniej anulowane, nie będą już uruchamiane. 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 opublikowana. Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.
Postanowiliśmy nie kontynuować opracowywania artefaktu android.arch.navigation:navigation-testing
. Chociaż okazało się to pomocne w wewnętrznych testach funkcji NavController
, zdecydowanie zalecamy korzystanie z alternatywnych strategii testowania, takich jak naśladowanie wystąpienia NavController
, ponieważ pozwoli to sprawdzić, czy wykonywane są prawidłowe wywołania navigate()
. To podejście zostało szczegółowo omówione w prezentacji dotyczącej pojedynczego działania na AndroidDevSummit 2018. Będziemy też pracować nad dodatkową dokumentacją dotyczącą testowania z nawigacją.
Nowe funkcje
- Obiekty
MenuItem
z elementemmenuCategory="secondary"
nie będą już wstawać wstecznego stosu, gdy są używane z metodamiNavigationUI
. b/120104424 AppBarConfiguration
umożliwia teraz ustawienie wystąpienia kreacji zastępczejOnNavigateUpListener
, która będzie wywoływana, gdynavController.navigateUp()
zwrócifalse
. b/79993862 b/120690961
Niezbędne zmiany
- Gdy używasz obiektu
<argument>
z elementemargType="reference"
, nawigacja nie analizuje już odwołania, a zamiast tego udostępnia sam nieprzetworzony identyfikator zasobu. b/111736515 - Domyślnie
onNavDestinationSelected()
wraca do miejsca docelowego początkowego wykresu nawigacyjnego, dzięki czemu jest zgodna z metodamisetup
. DodajmenuCategory="secondary"
do tablicyMenuItem
, aby nie powiększyć stosu. aosp/852869 - Metody
fromBundle()
wygenerowanych klasArgs
przyjmują teraz niepustą wartośćBundle
zamiast wartości nullBundle
aosp/845616
Poprawki błędów
- Argumenty są teraz prawidłowo analizowane z precyzyjnych linków jako prawidłowe
argType
, a nie zawsze jako ciągi znaków b/110273284 - Teraz Nawigacja prawidłowo eksportuje swoje zasoby publiczne b/121059552
- Usługa Safe Args jest teraz zgodna z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 lub nowszej b/119662045
12 grudnia 2018 r.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-alpha13
. Ta wersja zawiera niewielką zmianę w interfejsie API, która będzie przydatna dla niektórych użytkowników aplikacji Kotlin.
Zmiany w interfejsie API
- Użytkownik
androidx.work.Result
został przeniesiony do klasy wewnętrznej użytkownikaListenableWorker
. Zapobiega to konfliktom refaktoryzacji z klasąResult
najwyższego poziomu Kotlin. Jest to niezgodna zmiana w interfejsie API. b/120564418
Najnowsze zmiany w interfejsie API
- Użytkownik
androidx.work.Result
został przeniesiony do klasy wewnętrznej użytkownikaListenableWorker
.
6 grudnia 2018 r.
Podział
Strona 2.1.0-rc01
została zwolniona bez zmian z 2.1.0-beta01
.
Nawigacja
Nawigacja 1.0.0-alpha08
została opublikowana. Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.
Nowe funkcje
- Etykiety miejsc docelowych używane z metodami
NavigationUI
będą teraz automatycznie zastępować instancje{argName}
w obiekcieandroid:label
prawidłowym argumentem b/80267266. - Nawigacja zależy teraz od biblioteki pomocy 28.0.0 b/120293333
Niezbędne zmiany
- Nazwa usługi
OnNavigatedListener
została zmieniona naOnDestinationChangedListener
b/118670572 OnDestinationChangedListener
przekazuje teraz takżeBundle
argumentów aosp/837142.- Atrybuty
app:clearTask
iapp:launchDocument
oraz powiązane z nimi metody zostały usunięte. Użyj operatoraapp:popUpTo
z pierwiastkiem wykresu, aby usunąć wszystkie miejsca docelowe ze stosu wstecznego. b/119628354 ActivityNavigator.Extras
używa teraz wzorcaBuilder
i dodaje możliwość ustawiania dowolnych flagIntent.FLAG_ACTIVITY_
aosp/828140- Nazwa domeny
NavController.onHandleDeepLink
została zmieniona nahandleDeepLink
aosp/836063 - Wiele klas i metod, które nie są przeznaczone do podklas, np.
NavOptions
,NavInflater
,NavDeepLinkBuilder
iAppBarConfiguration
, zostało utworzonychfinal
aosp/835681. - Wycofana metoda
NavHostFragment.setGraph()
została usunięta aosp/835684 - Wycofana metoda
NavigationUI.navigateUp(DrawerLayout, NavController)
została usunięta. aosp/835684 - Tworzenie fragmentów kodu zostało przeniesione do
FragmentNavigator
, co ułatwia przekazanie procesu tworzenia fragmentów na platformęFragmentFactory
. b/119054429 - Konstruktor
NavGraphNavigator
nie przyjmuje już typuContext
aosp/835340 - NavigatorProvider to teraz klasa, a nie interfejs. Element
NavigatorProvider
zwrócony przezgetNavigatorProvider()
nie zmienił się. aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń pod numernavigate()
pod numerNavigator
. aosp/830663- Znacząca refaktoryzacja parametru
Navigator
eliminuje potrzebę korzystania z elementuOnNavigatorNavigatedListener
. Zamiast tegonavigate
zwraca przekierowywanyNavDestination
. - Instancje (
Navigator
) nie mogą już wysyłać zdarzeń typu pop do interfejsuNavController
. Rozważ użycieOnBackPressedCallback
do przechwycenia naciśnięć przycisku Wstecz i wywołanianavController.popBackStack()
. Aosp/833716
Poprawki błędów
popUpTo
działa teraz konsekwentnie, gdy miejscem docelowym jest element<navigation>
b/116831650- Naprawiliśmy kilka błędów, które powodowały występowanie błędu
IllegalArgumentException
podczas korzystania z zagnieżdżonych wykresów b/118713731 b/113611083 b/113346925 b/113305559 - Atrybut
dataPattern
miejsc docelowych<activity>
będzie teraz wypełniać argumenty z argumentów innych niż ciąg znaków przez wywołanie metodytoString()
b/120161365
Bezpieczne argumenty
- Bezpieczne argumenty obsługują obiekty możliwe do serializacji, w tym wartości Enum. Typy wyliczeń mogą ustawić wartość domyślną za pomocą literału wyliczeniowego bez nazwy klasy (np.
app:defaultValue="READ"
) b/111316353 - Bezpieczne Args obsługują tablice wszystkich obsługiwanych typów b/111487504
- Safe Args ignoruje teraz podfoldery katalogów zasobów b/117893516
- Tam, gdzie to możliwe, Safe Args dodaje adnotacje
@Override
b/117145301
5 grudnia 2018 r.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-alpha12
. Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją Breaking API changes poniżej. Prawdopodobnie zostanie ona opublikowana jako pierwsza wersja beta. alpha12
zawiera też obszerne aktualizacje dokumentacji.
Zmiany w interfejsie API
- Nowy artefakt:
work-rxjava2
, przedstawia:RxWorker
. To jestListenableWorker
, który wymaga podania wartościSingle<Payload>
. - Obsługa usługi JobDispatcher w Firebase została wycofana z powodu zbliżającego się jej wycofania. Oznacza to, że podczas przechodzenia do wersji beta artefakt
work-firebase
nie będzie już aktualizowany. W przyszłości rozważymy dodanie takiego rozwiązania. - Łączono:
Payload
w:Result
.Result
jest teraz „zaklejoną klasą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
. Wyniki z Twojego źródła danych (ListenableFuture
) dają teraz wynikResult
zamiastPayload
. MetodyWorker
nie mają metod pobierania ani ustawiania dla danych wyjściowychData
. Jest to niezbędna zmiana. - Dodano atrybuty
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
iConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
oraz warianty, aby lepiej obsługiwać identyfikatory URI treści powoli aktywujące się. b/119919774 - Dodano
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
wariant. Ta metoda wymaga interfejsu API 26. - Dodano metody rozszerzenia Kotlin:
Operation.await()
iListenableFuture.await()
. - Nazwa elementu
Operation.getException()
została zmieniona naOperation.getThrowable()
. Jest to niezbędna zmiana. - Klasa
ContentUriTriggers
i metody odwołujące się do niej nie są już dostępne publicznie. Jest to niezbędna zmiana. - Aby uprościć interfejs API, usunięto pozostałe metody varargs w funkcjach
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące zmienne Vararg za pomocą atrybutuArrays.asList(...)
. Nadal uwzględniamy wersje z jednym argumentem w każdej metodzie. Jest to niezbędna zmiana. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
warianty. Prezentował interfejs API niejasny, a dotychczasowe metodycombine
są bardziej zrozumiałe. Jest to niezbędna zmiana.
Poprawki błędów
- Implementacje przed Marshmallow są teraz bardziej niezawodne, jeśli chodzi o reagowanie na śmierć procesu w przypadku już wykonywanego zadania.
- Funkcja
LiveData
obserwowana przezobserveForever
jest śledzona przez WorkManager. To jest wsteczna poprawka z Biblioteki pokoi. b/74477406 Data.Builder.build()
zgłasza teraz wyjątek, jeśli zserializowany obiekt przekracza swój maksymalny rozmiar. Wcześniej zdarzało się to tylko w wątku w tle, w którym nie można było prawidłowo go obsłużyć.- Dalsze odróżnianie zadań zatrzymane i anulowane. W okresie
ListenableWorker.onStopped()
getWorkInfoById()
zwróciWorkInfo
zCANCELLED
State
. - Traktuj
null
Result
jako niepowodzenia wListenableWorker
. b/120362353 - Poprawka spekulacyjna dla tabletów Shield obsługującego interfejs API 24, który czasem zwracał błąd
IllegalArgumentException
. b/119484416
Najnowsze zmiany w interfejsie API
- Obsługa usługi JobDispatcher w Firebase została wycofana z powodu zbliżającego się jej wycofania. Oznacza to, że podczas przechodzenia do wersji beta artefakt
work-firebase
nie będzie już aktualizowany. W przyszłości rozważymy dodanie takiego rozwiązania. - Łączono:
Payload
w:Result
.Result
jest teraz „zaklejoną klasą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
. Wyniki z Twojego źródła danych (ListenableFuture
) dają teraz wynikResult
zamiastPayload
. MetodyWorker
nie mają metod pobierania ani ustawiania dla danych wyjściowychData
. - Dodano metody rozszerzenia Kotlin:
Operation.await()
iListenableFuture.await()
. - Nazwa elementu
Operation.getException()
została zmieniona naOperation.getThrowable()
. - Klasa
ContentUriTriggers
i metody odwołujące się do niej nie są już dostępne publicznie. - Aby uprościć interfejs API, usunięto pozostałe metody varargs w funkcjach
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące zmienne Vararg za pomocą atrybutuArrays.asList(...)
. Nadal uwzględniamy wersje z jednym argumentem w każdej metodzie. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
warianty. Prezentował interfejs API niejasny, a dotychczasowe metodycombine
są bardziej zrozumiałe.
4 grudnia 2018 r.
Room
Pokój 2.1.0-alpha03
został zwolniony z obsługą współprogramów i kilkoma poprawkami błędów.
Zmiany w interfejsie API
- Funkcja FTS
tokenizer
w@Fts3
/@Fts4
przyjmuje teraz ciąg znaków, a nie Enum. Dzięki temu sala może używać niestandardowych tokenizatorów. Wbudowane tokenizatory są nadal zdefiniowane wFtsOptions
jako stałe w postaci ciągu znaków. b/119234881
Nowe funkcje
- Kursy: metody DAO można teraz zawieszać funkcje. Aby umożliwić obsługę funkcji zawieszania w sali, udostępniliśmy nowy artefakt
room-coroutines
. b/69474692 - Metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
obsługują teraz zwracany typListenableFuture
. b/119418331
Poprawki błędów
- Naprawiono błąd, który powodował, że funkcja Room próbowała nieprawidłowo znaleźć konstruktor z kolumnami we właściwości
ignoredColumns
obiektu@Entity
. b/119830714 - Naprawiliśmy błąd, który powodował, że funkcja Room nie oznaczała parametrów metody DAO jako ostatecznej implementacji. b/118015483
- Naprawiono błąd, który powodował awarię procesora sali podczas zgłaszania błędu w zapytaniu zawierającym symbole specjalne. b/119520136
- Poprawiliśmy błąd, który powodował, że funkcja Room odrzucała inne implementacje
Collection
jako argumenty wyrażeniaIN
. b/119884035 - Naprawiliśmy błąd, który powodował, że funkcja LiveData zwracana z pokoju gromadziła niepotrzebne śmieci, jeśli są obserwowane na zawsze. Nie emitowały już nowych danych. b/74477406
- Zaktualizowano blokadę ekranu urządzenia
RoomDatabase
, aby ograniczyć rywalizację o blokadę. b/117900450
8 listopada 2018 r.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-alpha11
. Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API w wersji beta
.
W tej wersji wprowadzono niezbędne zmiany w interfejsie API. Zapoznaj się z sekcją Breaking API changes poniżej.
Zmiany w interfejsie API
work-runtime-ktx
przedstawia nowe urządzenieCoroutineWorker
.- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały zmienione na odpowiadające im wariantygetWorkInfo
. Jest to niezbędna zmiana. ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego, który wskazuje, czy elementWorkRequest
został anulowany.WorkManager
nie wprowadza już tego rozróżnienia. Jest to niezbędna zmiana.- Nazwa pakietu
androidx.work.test
została zmieniona na pakietandroidx.work.testing
. Jest to niezbędna zmiana. - Metody ustawiające w
Constraints
nie są już częścią publicznego interfejsu API. Jest to niezbędna zmiana. - Metody
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. Jest to niezbędna zmiana. - Nazwa aplikacji
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. Jest to niezbędna zmiana. - Konstruktor
WorkStatus
nie jest już częścią publicznego interfejsu API. Jest to niezbędna zmiana. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały zmienione naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. Jest to niezbędna zmiana. - Do publicznego interfejsu API dodaliśmy wiele adnotacji
@NonNull
, aby poprawić ergonomię interfejsu API. - Dodaj interfejs
WorkManager.enqueueUniqueWork()
API, aby umieszczać w kolejce unikalne elementyOneTimeWorkRequest
bez konieczności tworzeniaWorkContinuation
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. Jest to niezbędna zmiana. - Żadne warianty typu
enqueue
nie obsługują już zmiennych zmiennych typuWorkRequest
. Jest to niezbędna zmiana. Zamiast tego użyj Kolekcji. Do zmiany istniejącego kodu możesz użyćArrays.asList()
. Zrobiliśmy to, aby ograniczyć liczbę powierzchni i metod API. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje terazIllegalStateException
. Jest to niezbędna zmiana.
Poprawki błędów
- Elementy
WorkRequest.Builder
w artefakciework-runtime-ktx
używają teraz komponentówListenableWorker
. Poprawki b/117666259 - Upewnij się, że następne uruchomienie instancji
PeriodicWork
przypada w przyszłości. Poprawki b/118204399 - Usuń potencjalne wejście/wyjście dysku, jeśli używasz WorkManagera podczas uruchamiania aplikacji. Poprawki b/117796731
- Popraw warunki wyścigu w:
WorkConstraintsTracker
. Naprawia błąd android-workmanager/issues/56.
Najnowsze zmiany w interfejsie API
- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały zmienione na odpowiadające im wariantygetWorkInfo
. ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego, który wskazuje, czy elementWorkRequest
został anulowany.WorkManager
nie wprowadza już tego rozróżnienia.- Nazwa pakietu
androidx.work.test
została zmieniona na pakietandroidx.work.testing
. - Metody ustawiające w
Constraints
nie są już częścią publicznego interfejsu API. - Metody
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. - Nazwa aplikacji
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. - Konstruktor
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 typu
enqueue
nie obsługują już zmiennych zmiennych typuWorkRequest
. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje terazIllegalStateException
.
1 listopada 2018 r.
Podział
Strona 2.1.0-beta01
została zwolniona bez zmian z 2.1.0-alpha01
.
30 października 2018 r.
Room
Sala 2.1.0-alpha02
została zwolniona z kilkoma poprawkami błędów i nową funkcją.
Nowe funkcje
- Dodano obsługę odwołania do
@DatabaseView
w@Relation
. b/117680932
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że pokój przeprowadzał operacje wejścia-wyjścia dysku w wątku głównym w przypadku subskrybowania i usuwania typu zwrotu Rx. b/117201279
- Naprawiono błąd, który powodował, że funkcja Room nie znalazła odpowiedniego konwertera odpowiedniego typu dla pola w klasie encji Kotlin. b/111404868
- Naprawiono błąd, który powodował, że funkcja Room generowała nieprawidłowy kod dla implementacji interfejsu
DAO
z domyślną metodą Kotlin bez argumentów. b/117527454 - Zaktualizowaliśmy parser gramatyki SQLite w pokoju, naprawiając problem z wydajnością, który powodowałby długie czasy kompilacji. b/117401230
29 października 2018 r.
Nawigacja
Nawigacja 1.0.0-alpha07
została opublikowana z poprawkami błędów i zmianami w interfejsie API.
Nowe funkcje
- Nowa klasa AppBarConfiguration pozwala określić, które miejsca docelowe są uznawane za miejsca docelowe najwyższego poziomu. Więcej informacji znajdziesz w zaktualizowanej dokumentacji. b/117333663
- Teraz możesz przekazywać argumenty do początkowego miejsca docelowego wykresu b/110300470
- Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, łącznikami i znakami plusa. b/112806402
Niezbędne zmiany
- Moduł
navigation-testing-ktx
został złożony do jednostkinavigation-testing artifact
i nie zostanie opublikowany. - Artefakt
navigation-testing
zależy teraz od biblioteki standardowej Kotlin. Interfejs API został zmieniony, by był bardziej zgodny z konwencjami Kotlin, ale nadal możesz go używać do testów napisanych w Javie. - Wykresy nawigacyjne zarejestrowanych w pliku manifestu metadanych nie są już obsługiwane. b/118355937
- Akcji nie można już dołączać do miejsc docelowych <activity>. aosp/785539
Poprawki błędów
- Precyzyjne linki prawidłowo analizują teraz parametry zapytania. b/110057514
- Miejsca docelowe aktywności prawidłowo stosują teraz wszystkie animacje wejścia i wyjścia. b/117145284
- Usunięto awarię, która występowała po zmianie konfiguracji podczas korzystania z niestandardowych nawigatorów. b/110763345
Bezpieczne argumenty
- Bezpieczne argumenty są teraz uzależnione od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
- Można teraz generować wskazówki dojazdu dla klas wewnętrznych. b/117407555
- Rozwiązaliśmy problem z generowaniem wskazówek dojazdu do wykresu <include>. b/116542123
12 października 2018 r.
Podział
Udostępniliśmy 2.1.0-alpha01
stronicowanie z 2 głównymi dodatkami – usuwaniem stron i bibliotekami rozszerzeń KTX dla każdego artefaktu. Wprowadziliśmy też kilka innych zmian w interfejsie API i poprawki błędów.
Zmiany w interfejsie API
- Dodano
PagedList.Config.Builder.setMaxSize()
w celu ograniczenia liczby wczytywanych elementów w pamięci. - Dodano:
androidx.paging.Config()
jako alternatywę Kotlin dla:PagedList.Config.Builder
- Dodano:
androidx.paging.PagedList()
jako alternatywę Kotlin dla:PagedList.Builder
- Dodano:
DataSourceFactory.toLiveData()
jako alternatywę Kotlin dla:LivePagedListBuilder
- Dodano
DataSourceFactory.toObservable()
itoFlowable()
jako alternatywy dla Kotlin dla:RxPagedListBuilder
- Dodano element
AsyncPagedListDiffer.addPagedListListener()
do nasłuchiwania w przypadku zamiany PagedList na inną. b/111698609 - Dodano
PagedListAdapter.onCurrentListChanged()
wariant, który przekazuje starą i nową listę, oraz wycofano poprzedni wariant. - Dodano
PagedListAdapter/AsyncPagedListDiffer.submitList()
wariantów, które przyjmują dodatkowe wywołanie zwrotne, jeśli wyświetlana jest lista stron po różnicy. Pozwala to na synchronizację zamiany PagedList z innymi aktualizacjami interfejsu użytkownika. b/73781068 - Dodano
PagedList.getLoadedCount()
, aby poinformować Cię, ile elementów jest w pamięci. Pamiętaj, że jeśli symbole zastępcze są wyłączone, wartość zwracana jest zawsze równa.size()
.
Poprawki błędów
- Poprawiono warunek wyścigu w przypadku różnicowania w przypadku ponownego użycia list b/111591017
PagedList.loadAround()
zwraca teraz błądIndexOutOfBoundsException
, gdy indeks jest nieprawidłowy. Wcześniej mógł ulec awarii z niejasnym innym wyjątkiem.- Rozwiązano problem, w którym bardzo mały rozmiar początkowy wczytywany w połączeniu z niezmienionymi danymi uniemożliwiał dalsze wczytywanie pliku b/113122599
11 października 2018 r.
Menedżer pracy
Udostępniamy platformę WorkManager 1.0.0-alpha10
z obsługą pracy asynchronicznej kontrolowanej przez dewelopera. W tej wersji wprowadzono niezbędne zmiany w interfejsie API. Zapoznaj się z sekcją Breaking API changes poniżej.
Przewidujemy, że WorkManager wchodzi w ostatnie fazy okresu alfa. Spodziewamy się, że interfejs API będzie stabilny w wersji beta, dlatego poświęć trochę czasu na przesłanie opinii w naszym narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Usunięto wszystkie metody i klasy, które wcześniej
deprecated
, a zwłaszcza domyślny konstruktorWorker
. Jest to niezgodna zmiana w interfejsie API. - Nazwa
NonBlockingWorker
została zmieniona naListenableWorker
, która jest teraz odkrytą klasą publiczną i jest gotowa do użycia.- Metoda
ListenableWorker
zapewnia dostęp do 1 metody abstrakcyjnejListenableFuture<Payload> onStartWork()
, która jest wywoływana w wątku głównym. To Ty musisz rozpocząć i przetwarzać asynchroniczną pracę. Gdy skończysz, musisz odpowiednio zaktualizowaćListenableFuture
. Referencyjne implementacjeListenableFuture
są dostępne w pakiecieFutures
w językualpha02
(patrz sekcjaWorkManager
poniżej). - Komponent
Worker
rozszerza zakresListenableWorker
i nadal działa jak wcześniej, z użyciem metody abstrakcyjnejResult doWork()
. - Niektóre metody i członków zostały losowo zmienione z
Worker
naListenableWorker
. - Wkrótce udostępnimy referencyjne implementacje
ListenableWorker
, które używają współprogramów Kotlin (po opublikowaniu stabilnych wersji) i RxJava2.
- Metoda
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały scalone w klasę abstrakcyjną o nazwieWorkerFactory
. Implementacja zapewnia, że domyślne zachowanie oparte na odczuciach jest wywoływane w ramach ostatniej próby w przypadku wszystkich instancjiWorkerFactory
utworzonych przez użytkowników. Jest to niezbędna zmiana. - Usunięto metody
WorkManager.synchronous()
iWorkContinuation.synchronous()
oraz wszystkie powiązane metody. DodanoListenableFuture<Void>
jako zwracany typ wielu metod w interfejsie API. Jest to niezgodna zmiana w interfejsie API.- Możesz teraz synchronicznie pobierać i obserwować zdjęcia, korzystając z komponentów
ListenableFuture
. Na przykładWorkManager.enqueue()
zwracał kiedyś wynikvoid
, a teraz zwraca wartośćListenableFuture<Void>
. Możesz wywołaćListenableFuture.addListener(Runnable, Executor)
lubListenableFuture.get()
, aby uruchomić kod po zakończeniu operacji. - Pamiętaj, że te
ListenableFuture
nie informują o tym, czy operacja się udała czy nie. tylko o jego zakończeniu. Aby uzyskać te informacje, nadal musisz powiązać metody WorkManager w łańcuch. - Ignorujemy wywołania
cancel()
dotyczące tych obiektów, ponieważ są one niejasne i trudne w uzasadnieniu (czy anulujesz operację czy wynikową pracę?). Zgodnie z umowąFuture
. - Aby zachować spójność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i zmieniliśmy nazwy istniejących wariantów, które zwracały wartościLiveData
, tak aby zawierały „LiveData” w nazwie (np.getStatusesByIdLiveData(UUID)
). Jest to niezbędna zmiana w interfejsie API.
- Możesz teraz synchronicznie pobierać i obserwować zdjęcia, korzystając z komponentów
Poprawki błędów
- Naprawiono 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 Prokoparda, by zachować nowy konstruktor
Worker
. b/116296569 - Popraw potencjalną wartość
NullPointerException
w warunkach wyścigu, dla których zadanie byłoREPLACE
. b/116253486 i b/116677275 WorkContinuation.combine()
akceptuje teraz co najmniej 1 komponentWorkContinuation
zamiast 2 lub więcej elementów. b/117266752
Najnowsze zmiany w interfejsie API
- Usunięto wszystkie metody i klasy, które wcześniej
deprecated
, a zwłaszcza domyślny konstruktorWorker
. - Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały scalone w klasę abstrakcyjną o nazwieWorkerFactory
. - Usunięto
WorkManager.synchronous()
iWorkContinuation.synchronous()
. - Metody
WorkManager.getStatus*()
zwracają teraz wartościListenableFuture
.WorkManager.getStatus*LiveData()
: powrótLiveData
.
Transakcje terminowe
Opublikowano transakcje terminowe 1.0.0-alpha02
.
Zmiany w interfejsie API
- Deweloperzy mogą teraz używać
ResolvableFuture
iAbstractResolvableFuture
jako lekkich, konkretnych implementacjiListenableFuture
.
8 października 2018 r.
Room
Sala 2.1.0-alpha01
została zwolniona.
Nowe funkcje
- FTS: sala obsługuje teraz elementy z tabelą mapowania FTS3 lub FTS4. Do klas z adnotacjami
@Entity
można teraz dodać adnotacje@Fts3
lub@Fts4
, aby zadeklarować klasę z mapowaniem pełnotekstowej tabeli wyszukiwania. Opcje FTS umożliwiające dalsze dostosowanie są dostępne w metodach adnotacji. b/62356416 - Widoki danych: w sali można teraz deklarować klasę jako zapisane zapytanie (nazywane też widokiem danych) z użyciem adnotacji @DatabaseView. b/67033276
- Wartość automatyczna: pokój obsługuje teraz deklarowanie klas z adnotacjami AutoValue jako encji i POJO. Adnotacje dotyczące sal
@PrimaryKey
,@ColumnInfo
,@Embedded
i@Relation
można teraz zadeklarować w metodach abstrakcyjnych klasy z adnotacjami automatycznymi. Pamiętaj, że do tych adnotacji musi towarzyszyć atrybut@CopyAnnotations
, aby można było je poprawnie odczytać. b/62408420 - Dodatkowa obsługa typów zwrotów Rx: metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
obsługują teraz typy zwrotów RxCompletable
,Single<T>
iMaybe<T>
. b/63317956 - Typy stałe z
@Relation
: pola z adnotacjami, które wcześniej@Relation
musiały być konfigurowane, ale teraz mogą być parametrami konstruktora. enableMultiInstanceInvalidation
: to nowy interfejs API wRoomDatabase.Builder
, który umożliwia unieważnianie wielu wystąpień RoomDatabase przy użyciu tego samego pliku bazy danych. Ten mechanizm unieważniania wielu instancji działa również 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óry może służyć do wyświetlania ignorowanych pól według nazwy. Ta opcja jest przydatna do ignorowania pól dziedziczonych w encji. b/63522075
Zmiany w interfejsie API lub zachowaniu
mCallback
imDatabase
w saliRoomDatabase
to teraz@Deprecated
i zostaną usunięte z następnej głównej wersji pokoju. b/76109329
Poprawki błędów
- Rozwiązaliśmy 2 problemy, które powodowały, że podczas inicjowania sala nie mogła prawidłowo przywrócić danych z uszkodzonej bazy danych lub nieprawidłowej migracji. b/111504749 i b/111519144
- Usługa Room będzie teraz prawidłowo używać głównego konstruktora Kotlin w klasach danych, dzięki czemu nie trzeba będzie zadeklarować pól jako
vars
. b/105769985
1 października 2018 r.
Sala 2.0.0
została zwolniona bez zmian z 2.0.0-rc01
.
Strona 2.0.0
została opublikowana z jedną poprawką.
Podział
Poprawki błędów
- Usunięto awarię, która mogła wystąpić w przypadku bardzo szybkiego przewijania przy użyciu elementu
PositionalDataSource
i obiektów zastępczych b/114635383.
21 września 2018 r.
Cykl życia 2.0.0
został opublikowany z jedną poprawką z błędu z 2.0.0-rc01
w ViewModel.
Cykl życia
Poprawki błędów
- Naprawiono regułę ViewModel Prokopard, która nieprawidłowo usuwała konstruktory b/112230489
20 września 2018 r.
Nawigacja
Nawigacja 1.0.0-alpha06
została opublikowana z poprawkami błędów i zmianami w interfejsie API.
Nowe funkcje
- Przejścia elementów udostępnionych w przypadku miejsc docelowych fragmentów i aktywności są teraz obsługiwane b/79665225. Więcej informacji znajdziesz w artykule Wdrażanie nawigacji za pomocą komponentu Architektura nawigacji.
- Wybranie elementu w usłudze
NavigationView
spowoduje teraz zamknięcie każdej zawierającej dolną planszę b/112158843
Zmiany w interfejsie API
- Zmiana wymagająca: metoda Nawigatora
navigate()
przyjmuje teraz parametrNavigator.Extras
. - Metoda
getGraph()
kontrolera NavController to terazNonNull
b/112243286
Poprawki błędów
NavigationUI.setupWithNavController()
nie ujawnia już wyświetleń, jeśli jest używany z widokami 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 klasę Directions swoich elementów nadrzędnych (o ile taka istnieje w klasie b/79871405).
- Klasy kierunków i args mają teraz przydatną implementację
toString()
b/111843389
19 września 2018 r.
Menedżer pracy
Udostępniliśmy system 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ść poniższy kod w pliku Gradle jako tymczasowe obejście do czasu, gdy rozwiążemy ten problem w wersji alfa10:
Odlotowy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Poprawki błędów
- Dodaliśmy kolejną poprawkę niezbędną do wystąpienia błędu „100 zadań”. b/115560696
- Dodaliśmy kilka poprawek błędów związanych z ograniczeniami klucza obcego spowodowanymi warunkami wyścigu. b/114705286
- Przekazano wywołania
ConstraintTrackingWorker.onStopped(boolean)
do bazowej instancjiWorker
. b/114125093 - Wymuszaj prawidłowe minimalne opóźnienie ponowienia dla Firebase JobDispatcher. b/113304626
- Ulepszona funkcja podziału na wątki gwarantuje wewnętrzny charakter biblioteki.
- Napraw potencjalny problem z wewnętrznym usuwaniem duplikatów
LiveData
.
Zmiany w interfejsie API
- Możesz teraz tworzyć własne instancje
Worker
w czasie działania, określającWorkerFactory
w komponencieWorkManager.Configuration
. Fabryka zastępcza toDefaultWorkerFactory
. Pasuje do wcześniejszych wersji WorkManagera.- Domyślne konstruktory
Worker
iNonBlockingWorker
są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)
) i wywołajsuper(Context, WorkerParameters)
. W przyszłych wersjach WorkManagera zostanie usunięty domyślny konstruktor.
- Domyślne konstruktory
- Zaczęliśmy korzystać z nowego artefaktu
ListenableFuture
wewnętrznie (bez zależności Gujawa). W kolejnych wersjach wprowadzimy do interfejsu API ListenableFutures. Ta zmiana umożliwi późniejsze odkrycie elementuNonBlockingWorker
. - Dodano możliwość uruchamiania pracy na czas w aplikacji
TestDriver
za pomocąTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Niezbędne zmiany
- Domyślne konstruktory
Worker
iNonBlockingWorker
zostały wycofane. Jak najszybciej przejdź na nowy konstruktor. W kolejnych wersjach zostanie usunięty domyślny konstruktor.
27 sierpnia 2018 r.
Menedżer pracy
Udostępniamy platformę WorkManager 1.0.0-alpha08
z poprawkami błędów.
Poprawki błędów
- Wyraźnie oznaczono komponenty WorkManagera jako nieświadome i nie są one uruchamiane bezpośrednio podczas rozruchu bezpośredniego. W przyszłości udostępnimy wersję WorkManagera z bezpośrednim rozruchem. b/112665532
- Rozwiązaliśmy problem, który powodował, że ponawiana praca nie była uruchamiana. b/112604021
- Ustalona praca okresowa nie powtarzała się wielokrotnie (związane z tym problemem). b/112859683
- Uznawane zasady wycofywania, gdy proces aplikacji jest już uruchomiony.
- Poprawiliśmy komunikaty o wyjątkach w pliku
Data
, aby wskazać, że limit wynosi 10 KB. - Zmniejszono maksymalną wartość z
Configuration.setMaxSchedulerLimit(int)
do 50, aby uwzględnić czas oczekiwania na zakończenie przetwarzaniaJobScheduler
. b/112817355
16 sierpnia 2018 r.
Menedżer pracy
Udostępniliśmy system 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 zwracać nieograniczoną liczbę wyników.
- Zadania, których wykonanie zostało ukończone, są teraz prawidłowo anulowane wszystkie oczekujące kopie tej pracy w innych algorytmach szeregowania. Doprowadziło to do przekroczenia limitu
JobScheduler
zadań. b/111569265 - Naprawiono
ConcurrentModificationException
wConstraintTracker
. b/112272753 - Adnotacje typu zwracanego kodu
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229
Zmiany w interfejsie API
Worker
przedłuża teraz nowe zajęcia:NonBlockingWorker
. Nie ma to wpływu na bieżące wykorzystanie. W przyszłościNonBlockingWorker
stanie się w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań do obsługi wątków.- Adnotacje typu zwracanego kodu
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229 - Rozszerzenia Kotlin: wycofano interfejs
Map.toWorkData()
i dodanoworkDataOf(vararg Pair<String, Any?>)
najwyższego poziomu, aby zapewnić większą spójność z istniejącymi interfejsami API.
10 sierpnia 2018 r.
Nawigacja
Nawigacja 1.0.0-alpha05
została opublikowana z poprawkami błędów.
Poprawki błędów
- Popraw błąd, który powoduje nieprawidłowe działanie cofania. b/111907708
- Popraw błąd w
equals()
klasach wygenerowanych argumentów. b/111450897 - Napraw błąd kompilacji w Safe Args. b/109409713
- Jak naprawić konwersję z identyfikatorów zasobów na nazwy Java b/111602491
- Naprawianie komunikatów o błędach dotyczących wartości null we wtyczce Safe Args.
- Dodaj brakujące adnotacje wartości null.
6 sierpnia 2018 r.
Wersje AndroidaX cyklu życia, pokoju i stron są dostępne w wersji 2.0.0-rc01
. Żadne artefakty nie zostały zmienione od 2.0.0-beta01
.
1 sierpnia 2018 r.
Menedżer pracy
Udostępniamy platformę WorkManager 1.0.0-alpha06
z poprawkami błędów.
Poprawki błędów
- Zapobiegaj blokadzie bazy danych podczas planowania pracy. b/111801342
- Popraw błąd, przez który
PeriodicWork
nie uruchamia się zgodnie z harmonogramem w trybie uśpienia. b/111469837 - Napraw warunki wyścigu, gdy śledzisz ograniczenia, które powodują awarię
WorkManager
. googlecodelabs/android-workmanager/issues/56 - Jeśli używasz
WorkRequest.Builder#build()
, utwórz niepowtarzalne elementyWorkRequest
. b/111408337 - Włącz korzystanie z właściwości
RescheduleReceiver
tylko wtedy, gdy potrzebne są komponentyWorkRequest
. b/111765853
24 lipca 2018 r.
Menedżer pracy
Udostępniliśmy system WorkManager 1.0.0-alpha05
z ważnymi poprawkami błędów i zmianami w logowaniu.
Zmiany w interfejsie API
- Adnotacje
WorkManager.getInstance()
mają teraz postać@NonNull
zamiast@Nullable
. Jeśli natomiast singleton nie zostanie poprawnie zainicjowany w przypadku inicjowania ręcznego, metoda spowoduje zgłoszenie błęduIllegalStateException
. Jest to przełomowa zmiana w interfejsie API. - Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int)
, który może kontrolować szczegółowość w usłudze WorkManager. Domyślnie WorkManager rejestruje daneLog.INFO
i nowsze. - Zmieniono podpis interfejsu
Data.getString()
, więc nie przyjmuje on już wartości domyślnej (domyślnienull
). Jest to niezgodna zmiana w interfejsie API. - Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
iData.fromByteArray(byte[])
. Jest to niezgodna zmiana w interfejsie API.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznej kopii zapasowej. Mogło to spowodować awarię. b/110564377
- Poprawiono podwójne harmonogramy
PeriodicWorkRequest
s przy korzystaniu z metodyJobScheduler
. b/110798652 - Naprawiono problem z prawidłowym działaniem funkcji
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 kilka potencjalnych problemów z warunkami i czasem wyścigu.
- Prawidłowo zwolniono
BroadcastReceiver
elementy, które nie były już potrzebne. - Zoptymalizowano przekładanie wydajności na ponowne uruchomienie aplikacji po wymuszeniu zamknięcia.
- Zezwolono na wywołanie funkcji
TestScheduler.setAllConstraintsMet(UUID)
przed umieszczeniem danego elementuWorkRequest
w kolejce lub po nim. b/111238024
Niezbędne zmiany
- Adnotacje
WorkManager.getInstance()
mają teraz postać@NonNull
zamiast@Nullable
. - Zmieniono podpis elementu
Data.getString()
, więc nie przyjmuje 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()
iData.fromByteArray(byte[])
.
19 lipca 2018 r.
Nawigacja
Nawigacja 1.0.0-alpha04
i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.
Zmiany w interfejsie API lub zachowaniu
- NavHostFragment zawsze ustawia bieżący fragment jako główny fragment nawigacyjny, upewniając się, że menedżery fragmentów podrzędnych są umieszczane przed wypełnieniem 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 kliknąć b/111534438
- Klasy Args potwierdzają teraz, że atrybuty
NonNull
w rzeczywistości nie mają wartości null b/111451769 - Do klas wygenerowanych na podstawie polecenia NavDirections i Args zostały dodane dodatkowe adnotacje
NonNull
b/111455455 b/111455456.
Poprawki błędów
- Naprawiono problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnego linku do miejsca docelowego fragmentu b/111515685
12 lipca 2018 r.
Nawigacja
Nawigacja 1.0.0-alpha03
i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.
Zmiany w interfejsie API lub zachowaniu
- Dodano metodę NavigationUI.setupWithNavController do paska narzędzi Toolbar b/109868820
- Wprowadzono metodę NavigationUI.setupWithNavController do klasy CollapsingToolbarUkład: b/110887183
- popBackStack() zwraca teraz wartość „false”, gdy stos wsteczny jest pusty lub gdy podany identyfikator miejsca docelowego nie znajduje się w stosie wstecznym b/110893637
- FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu FragmentManager, unikając wyjątków „Nie można wykonać tego działania po onSaveInstanceState” b/110987825
Bezpieczne argumenty
- Zmiana zmieniająca: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkością liter wielbłąda w odpowiednich nazwach metod NavDirections.
- Np.
DemoController.index
zmieni się nasetDemoControllerIndex
b/79995048 - Np.
action_show_settings
zmieni się naactionShowSettings
b/79642240
- Np.
- Niezgodna zmiana: domyślnie argumenty nie mają wartości zero. Aby zezwolić na wartości null w ciągu znaków i argumentach typu parcelable, dodaj
app:nullable="true"
b/79642307 - Możesz teraz używać
app:type="long"
z wartością defaultValues w postaci „123L” b/79563966 - Argumenty typu Parcelable są teraz obsługiwane przy użyciu w pełni kwalifikowanej nazwy klasy w funkcji
app:type
. Jedyną obsługiwaną wartością domyślną jest"@null"
b/79563966 - Klasy ARG implementują teraz
equals()
ihashCode()
b/79642246 - Wtyczkę Safe Args możesz teraz stosować w projektach biblioteki b/80036553
- Wtyczka Safe Args można teraz stosować do projektów cech b/110011752
Poprawki błędów
- Rozwiązaliśmy problemy z nawigacją w ramach metod cyklu życia fragmentu b/109916080
- Rozwiązanie problemów z wielokrotnym nawigacją po zagnieżdżonych wykresach b/110178671
- Rozwiązanie problemów z usługą
setPopUpTo
z pierwszym miejscem docelowym na wykresie b/109909461 - Rozwiązanie problemu polegającego na tym, że wszystkie wartości
app:defaultValue
były przekazywane jako ciągi znaków b/110710788 - aapt2 w pakiecie z wtyczką Androida do obsługi Gradle 3.2 Beta 01 dodaje teraz reguły Keep dla każdego atrybutu
android:name
w plikach XML nawigacji b/79874119 - Usunięto wyciek pamięci podczas zastępowania domyślnego obiektu FragmentNavigator b/110900142
2 lipca 2018 r.
Wersje AndroidaX cyklu życia, pokoju i stron są dostępne w wersji 2.0.0-beta01
.
Cykl życia
Poprawki błędów
- Naprawiliśmy regułę Promocji wykorzystującą usługę LifecycleObserver, która zachowywała tylko implementacje bez interfejsów podrzędnych b/71389427
- Naprawiono reguły Prompard w ViewModel, które pozwalały na zaciemnianie i zmniejszanie wartości
Room
Zmiany w interfejsie API lub zachowaniu
- Dodano
RoomDatabase.Builder.setQueryExecutor()
, aby umożliwić dostosowanie miejsca wykonywania zapytań - Dodano obsługę RxJava2
Observable
- Wygenerowane implementacje DAO i bazy danych są już ostateczne
Poprawki błędów
- Podaj nazwę klasy/pola w błędzie „Nie można znaleźć metody pobierania dla pola” b/73334503
- Poprawiono wsteczną zgodność RoomOpenHelper ze starszymi wersjami pokoju b/110197391
Podział
Poprawki błędów
- Naprawiono znikanie treści w niektórych przypadkach przedrostka (obiekty zastępcze wyłączone, PositionalDataSource) b/80149146
- (Już dostępna w wersji
1.0.1
) Naprawiono awarie, które powodowały, żePagedListAdapter
iAsyncPagedListDiffer
nie sygnalizowały zdarzeń przeniesienia. b/110711937
26 czerwca 2018 r.
Podział
Strona 1.0.1
została opublikowana z jedną poprawką w wersji runtime
. Zdecydowanie zalecamy korzystanie z 1.0.1
ze względu na stabilność. Udostępniono również stronę rxJava2 1.0.1
, która jest identyczna jak 1.0.0-rc1
.
Poprawki błędów
- Naprawiono awarie, które powodowały, że
PagedListAdapter
iAsyncPagedListDiffer
nie sygnalizowały zdarzeń przeniesienia. b/110711937
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-alpha04
.
Poprawki błędów
Harmonogramy
PeriodicWorkRequest
są teraz prawidłowo przekładane w przypadku korzystania z implementacji opartej naAlarmManager
.Naprawiono potencjalny błąd ANR, który występował podczas przekładania wszystkich instancji roboczych po wymuszeniu zatrzymania lub ponownym uruchomieniu. b/110507716
Dodano adnotacje wartości null do różnych interfejsów API WorkManager. b/110344065
Loguj niewykryte wyjątki, które występują podczas wykonywania instancji roboczej. b/109900862
Dozwolone niszczycielskie migracje bazy danych w przypadku przywrócenia starszej wersji WorkManagera. b/74633270
Naprawiono awarię migracji podczas tworzenia zduplikowanych tagów niejawnych. Jest to bardzo rzadki problem, który występuje tylko wtedy, gdy samodzielnie używasz tego samego formatu tagu niejawnego.
19 czerwca 2018 r.
Room
Sala 1.1.1
została zwolniona. Ta wersja jest identyczna z pokojem 1.1.1-rc1
.
Menedżer pracy
Zwolniono menedżera WorkManager 1.0.0-alpha03
.
Poprawki błędów
Naprawiono warunek wyścigu w implementacji opartej na
AlarmManager
. b/80346526.Naprawiono zduplikowane zadania podczas korzystania z
JobScheduler
po ponownym uruchomieniu urządzenia.Zadania z aktywatorami identyfikatora URI treści są teraz zachowywane również po ponownym uruchomieniu. b/80234744
Aktualizacje dokumentacji: b/109827628, b/109758949, b/80230748
Naprawiono awarię podczas ponownego dodawania do kolejki elementu
WorkRequest
. 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 w interfejsie API
Dodano synchroniczną wersję systemu
WorkContinuation.getStatuses()
getStatusesSync()
.Worker
potrafi odróżnić anulowanie inicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego.Worker.isStopped()
zwraca wartośćtrue
, jeśli przesłano żądanie postoju.Worker.isCancelled()
zwraca wartośćtrue
, gdy zadanie zostało wyraźnie anulowane. b/79632247Dodano obsługę JobParameters#getNetwork() w interfejsie API 28. Ta reklama jest widoczna w aplikacji
Worker.getNetwork()
.Dodano dyrektywę
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
, aby umożliwić Ci wymuszenie wysyłania liczby zadań do wysyłania doJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie zajmie wszystkich dostępnychJobScheduler
miejsc.Dodano funkcję
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, która pomaga zdefiniować zakres identyfikatorów zadańJobScheduler
, którychWorkManager
może używać. b/79996760Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień dla danego parametruWorker
. B/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia umieszczenie w kolejce unikalnych kluczyPeriodicWorkRequest
. 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()
w celu dodatkowego czyszczenia stanu wewnętrznego.Dodano polecenie
WorkManager.pruneWork()
, aby usunąć ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758
Zmiany w działaniu
- Dodaliśmy niejawny tag do wszystkich elementów
WorkRequest
, który jest w pełni kwalifikowaną nazwą klasy na potrzeby klasyWorker
. Ta opcja umożliwia usuwanie komponentówWorkRequest
bez elementówtag
lub gdyid
jest niedostępny. b/109572351
Niezbędne zmiany
Nazwa elementu
Worker.WorkerResult
została zmieniona naWorker.Result
.Worker.onStopped
ma teraz dodatkowy parametrisCancelled
ustawiony natrue
, gdy zdarzenieWorker
zostało bezpośrednio anulowane.
7 czerwca 2018 r.
Nawigacja 1.0.0-alpha02
została opublikowana.
Nawigacja
Zmiany w działaniu
FragmentNavigator
używa teraz kontasetReorderingAllowed(true)
. b/109826220Teraz nawigacja URLDekoduje argumenty URL-e analizowane z adresów URL precyzyjnych linków. b/79982454
Poprawki błędów
Naprawiono błąd
IllegalStateException
podczas wywoływania przechodzenia z metod cyklu życia fragmentu. b/79632233Aby rozwiązać problem migotania podczas używania animacji, nawigacja korzysta teraz z Biblioteki pomocy w wersji 27.1.1. b/80160903
Poprawiono błąd
IllegalArgumentException
w przypadku użycia parametru defaultNavHost="true" jako fragmentu podrzędnego. b/79656847Naprawiono błąd
StackOverflowError
podczas korzystania z NavDeepLinkBuilder. b/109653065Naprawiono błąd
IllegalArgumentException
podczas przechodzenia z powrotem do zagnieżdżonego wykresu. b/80453447Naprawiono problem z nakładającymi się fragmentami przy korzystaniu z funkcji
launchSingleTop
. b/79407969Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla zagnieżdżonych wykresów. b/79734195
Podczas korzystania z zagnieżdżonego wykresu jako elementu
MenuItem
interfejs NavigationUI wyróżnia teraz właściwy element. b/109675998
Zmiany w interfejsie API
Atrybut
clearTask
działań i powiązany interfejs API wNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
działań i powiązany interfejs API wNavOptions
zostały wycofane. b/109806636
24 maja 2018 r.
Zwolniono menedżera WorkManager 1.0.0-alpha02
.
Menedżer pracy
Poprawki błędów
Poprawiono błąd
NullPointerException
w dniuState.isFinished()
. B/79550068Rozwiązaliśmy problem, który powodował, że harmonogram spotkań
Worker
został przełożony naApplication.onCreate()
. B/79660657Rozwiązaliśmy problem, który powodował, że można było zaplanować więcej zadań niż jest to dozwolone w systemie operacyjnym. b/79497378
Przenieśliśmy czyszczenie blokad uśpienia powiązanych z urządzeniami
Worker
do wątku w tle.Implementacja
AlarmManager
jest teraz prawidłowo czyszczona po zakończeniu wszystkich oczekujących zadań.Usunięto problem z zapytaniami SQL czyszczenia, które wpływały na języki inne niż angielski. b/80065360
Dodano obsługę komponentów
float
w usłudzeData
. b/79443878Data.Builder.putAll()
zwraca teraz wystąpienieBuilder
. b/79699162Więcej plików javadoc i poprawek w dokumentacji. b/79691663
Zmiany w interfejsie API
Worker
może zareagować na zatrzymanie.Worker.isStopped()
może zostać użyty do sprawdzenia, czyWorker
został zatrzymany.Worker.onStopped()
może służyć do wykonywania prostych operacji czyszczenia.Interfejs
Worker.getTags()
API zwracaSet
tagów powiązanych zWorker
.Dodano przeciążenia (
javax.time.Duration
) w przypadku interfejsów API, które wymagają kombinacji czasu trwania iTimeUnit
. Strzeżony przez@RequiresApi(26)
.Rozszerzenia (
WorkManager
) zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia zostały wycofane i zostaną usunięte w przyszłej wersji.Interfejs
Configuration.withExecutor()
został wycofany. Użyj w zamian zasadyConfiguration.setExecutor()
.
16 maja 2018 r.
Udostępniliśmy strony RxJava2 1.0.0-rc1
i pokój 1.1.1-rc1
dla stron docelowych. Jeśli używasz migracji, zdecydowanie zalecamy użycie pokoju 1.1.1-rc1
zamiast 1.1.0
.
Room
Naprawiono błąd, który powodował, że sala nie obsługiwała prawidłowo inicjowania po migracji b/79362399
Podział
Strona rxjava2
zostanie przeniesiona do wersji kandydującej do wersji bez zmian w stosunku do początkowej wersji alfa.
8 maja 2018 r.
Strona 1.0, nawigacja i WorkManager (alfa), sala 1.1, AndroidX
Opublikowano tempo 1.0.0
i Sala 1.1.0
oraz wersje alfa 2 nowych komponentów architektury – nawigacji i WorkManager.
Podział na strony i pokój nie zmieniły się od czasu wprowadzenia najnowszych wersji kandydujących.
Nowa biblioteka: nawigacja
Nawigacja stanowi platformę do tworzenia nawigacji w aplikacji. Pierwsza wersja to 1.0.0-alpha01
.
Nowa biblioteka: WorkManager
Usługa WorkManager upraszcza planowanie i wykonywanie gwarantowanych zadań w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01
.
AndroidX
Przenosimy komponenty architektury, takie jak zaktualizowane nazwy pakietów i nazwy artefaktów, oraz zależności od innych bibliotek AndroidX, które staną się częścią Androida.
Są one publikowane w wersji 2.0.0-alpha1
i można ich używać w połączeniu z innymi bibliotekami AndroidaX.
Rozszerzenia Kotlin
ViewModel, ReactiveStreams i Sqlite (dawniej komponent „Database” rozwiązania Room) mają biblioteki rozszerzeń Kotlin dodane w wersji alfa AndroidaX. Dodatkowo Nawigacja i WorkManager zawierają moduły -ktx. Każdy z nich znajdziesz w sekcji Dodawanie komponentów.
2 maja 2018 r.
- Kandydat do udostępnienia sali 1.1.0
- Sala
1.1.0-rc1
została zwolniona.
Poprawki błędów
- Pokój jest teraz zgodny z systemem Kotlin
1.2.40
. B/78328708
19 kwietnia 2018 r.
Kandydat do udostępnienia strony
Tempo 1.0.0-rc1
i pokój 1.1.0-beta3
zostały zwolnione.
Podział
Nie mamy więcej znanych problemów ani nowych funkcji przeznaczonych dla etapu 1.0.0
. Uaktualnij projekty, aby używały 1.0.0-rc1
. Pomóż nam je przetestować, żebyśmy mogli wysłać solidny 1.0.0
.
Brak zmian w tej wersji. Jest taka sama jak w 1.0.0-beta1
.
Room
Poprawki błędów
- Poprawianie błędu kompilacji, gdy POJO w Kotlin odwołuje się do encji relacji zdefiniowanej w Javie b/78199923
5 kwietnia 2018 r.
Udostępniono pokój 1.1.0-beta2
, strony 1.0.0-beta1
i stronowanie RxJava 1.0.0-alpha1
.
Przez krótki czas będzie ona dostępna w wersji beta, zanim zostanie udostępniona w wersji kandydującej do opublikowania.
Nie planujemy dalszych zmian w interfejsie API w przypadku Paging 1.0
, a jeśli chodzi o wszelkie zmiany w interfejsie API, jest bardzo wysoki.
Obsługa strony w języku alfa (RxJava2) na potrzeby obsługi stron docelowych została opublikowana jako osobny opcjonalny moduł (android.arch.paging:rxjava2:1.0.0-alpha1
) i tymczasowo będzie miała osobną wersję do momentu ustabilizowania się stanu.
Ta nowa biblioteka stanowi alternatywę dla języka LivePagedListBuilder
w języku RxJava2, która umożliwia tworzenie komponentów Observable
i Flowable
, przyjmując Scheduler
s zamiast Executor
:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
Java
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
Podział
Nowe funkcje
- Element
RxPagedListBuilder
został dodany za pomocą nowego artefaktuandroid.arch.paging:rxjava2
.
Zmiany w interfejsie API
Zmiany w interfejsie API mające na celu wyjaśnienie roli wykonawców w kreatorach:
Zmieniono nazwę z
setBackgroundThreadExecutor()
nasetFetchExecutor()
(wPagedList.Builder
iLivePagedListBuilder
)Zmieniono nazwę
setMainThreadExecutor()
nasetNotifyExecutor()
(wPagedList.Builder
).
Zmieniono ustawienie
PagedList.mCallbacks
użytkownika jako prywatnego.
Poprawki błędów
LivePagedListBuilder
aktywuje początkowe obciążeniePagedList
we wskazanym wykonawcy, a nie na puli wątków operacji wejścia-wyjścia w komponentach Arch Komponenty.Naprawiono nieprawidłowe zachowanie w wewnętrznych kodach
DataSource
(używane do implementacji interfejsuDataSource.map
oraz ładowania funkcjiPositionalDataSource
z wyłączeniem zastępczym) b/77237534.
Room
Poprawki błędów
Naprawiliśmy krytyczny błąd w implementacjach
Single
iMaybe
sali, w którym dochodziło do ponownego wykorzystania zapytania z wyprzedzeniem, co powodowało problemy w przypadku dodania więcej niż 1 obserwatora do zwracanego zdarzeniaSingle
lubMaybe
. b/76031240RoomDatabase.clearAllTables nie będzie
VACUUM
bazy danych, jeśli zostanie ona wywołana w ramach transakcji. b/77235565
21 marca 2018 r.
Anulowano rezerwację sal 1.1.0-beta1
, stron 1.0.0-alpha7
i cykli życia 1.1.1
.
Room
Zmiany w interfejsie API
- Z opinii na temat weryfikacji interfejsu API wynika, że
@RawQuery
nie akceptuje już przekazywaniaString
jako parametru zapytania. Musisz użyć SupportSQLiteQuery. (zobacz SimpleSQLiteQuery, aby łatwo utworzyć instancję SupportSQLiteQuery z obsługą argumentów). - Metoda fallbackToDestructivemigFrom narzędzia RoomDatabase.Builder akceptuje teraz
vararg int
zamiastvararg Integer
.
Poprawki błędów
Metoda RoomDatabase.clearAllTables próbuje teraz zwrócić przestrzeń dyskową z powrotem do systemu operacyjnego, ustawiając punkt kontroli WAL i
VACUUM
ustawiając bazę danych.@RawQuery
akceptuje teraz dowolne Pojo dla właściwościobservedEntities
, o ile Pojo odwołuje się do co najmniej 1 encji za pomocą pólEmbedded
lub elementówRelation
. b/74041772Strona dla sali: implementacja DataSource w pokoju prawidłowo obsługuje zależności z wieloma tabelami (np. relacje i złączenia). Wcześniej te działania nie aktywowały nowych wyników lub mogły się nie skompilować. b/74128314
Cykle życia
Jedna niewielka zmiana: element android.arch.core.util.Function
został przeniesiony z arch:runtime
do arch:common
. Dzięki temu można z niego korzystać bez uzależniania środowiska wykonawczego, np. w paging:common
poniżej.
lifecycle:common
jest zależność od lifecycle:runtime
, więc ta zmiana nie ma bezpośredniego wpływu na lifecycle:runtime
, a jedynie moduły bezpośrednio bazujące na lifecycle:common
, tak jak ma to miejsce na stronie.
Podział
Tempo 1.0.0-alpha7
jest dostępne razem z cyklami życia 1.1.1
. Strona alfa 7 zależy od przeniesienia klasy Function
opisanej powyżej, więc musisz zaktualizować zależność lifecycle:runtime
do android.arch.lifecycle:runtime:1.1.1
.
Strona alpha7
ma być ostatnią wersją przed premierami wersji beta.
Zmiany w interfejsie API
- Obiekty
DataSource.LoadParams
mają teraz publiczny konstruktor, a obiektyDataSource.LoadCallback
są teraz abstrakcyjne. Umożliwia to pakowanie funkcjiDataSource
lub bezpośrednie testowanieDataSource
z przykładowym wywołaniem zwrotnym. b/72600421 - twórcy map dla DataSource i DataSource.Factory,
map(Function<IN,OUT>)
umożliwia przekształcanie, zawijanie i dekorowanie wyników ładowanych przezDataSource
.mapByPage(<List<IN>,List<OUT>>)
umożliwia te same funkcje w przetwarzaniu wsadowym (np. jeśli elementy wczytane z SQL muszą dodatkowo wysyłać zapytania do oddzielnej bazy danych, można to zrobić w ramach wsadu).
- Dodano metodę
PagedList#getDataSource()
jako zapewniającą wygodę: b/72611341 - Wszystkie wycofane klasy zostały usunięte z interfejsu API, w tym pozostałości pakietu
recyclerview.extensions
iLivePagedListProvider
. - Język
DataSource.Factory
został zmieniony z interfejsu na klasę abstrakcyjną, aby umożliwić działanie mapy.
Poprawki błędów
- Zmieniono konstruktorów na ostateczne. b/70848565
- Implementacja pokoju
DataSource
jest teraz naprawiona, aby obsługiwać zapytania z wieloma tabelami – ta poprawka występuje w salach od wersji 1.1.0-beta1 (patrz wyżej). - Naprawiono błąd, który powodował, że funkcja
BoundaryCallback.onItemAtEndLoaded
nie była wywoływana w przypadku funkcjiPositionalDataSource
, gdy włączone są symbole zastępcze, a łą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
sali 1.1.0
.
Zmiany w interfejsie API
Metody
addObserver
iremoveObserver
obiektu InvalidationTracker są teraz synchroniczne i należy je wywoływać w wątku bez interfejsu użytkownika. Zapobiega to wyświetlaniu niektórych warunków wyścigowych podczas obserwacji tabel.Dostępna jest nowa metoda
clearAllTables()
w klasie RoomDatabase, która umożliwia skrócenie zawartości tabeli. b/63807999SupportSQLiteQuery
ma teraz metodęgetArgCount()
, która zwraca liczbę parametrów zapytania. b/67038952
Poprawki błędów
Zapytanie
@RawQuery
jest teraz prawidłowo obsługiwane w przypadku zapytań stronicowania. b/72600425Nazwy sal
Dao
mają teraz prawidłowe nazwy, dzięki czemu można uniknąć konfliktów nazw, jeśli co najmniej 2 interfejsyDao
są klasami wewnętrznymi w tym samym pakiecie i mają tę samą nazwę. b/73536380Ogólne typy pól w elementach
Pojo
są prawidłowo analizowane jako należące do klasy rozszerzenia. b/73534868Parametry zapytania w interfejsach
Dao
dziedziczone z artefaktów zależności są teraz prawidłowo analizowane. b/68118746Zapytania generowane dla zapytań
@Relation
teraz prawidłowo zmieniają znaczenie nazw pól. b/70925483
27 lutego 2018 r.
Strona 1.0.0-alpha6
została opublikowana razem z Biblioteką pomocy w wersji 27.1.0.
ListAdapter
i kilka powiązanych z nimi klas zostały przeniesione bezpośrednio z biblioteki stron docelowych do Recyclerview. Wprowadziliśmy też kilka zmian, aby ułatwić korzystanie z funkcji niektórych klas. Ta wersja alfa podziału na strony może być ostatnią z istotnymi zmianami powodującymi niezgodność z zasadami interfejsu API.
Zmiany w interfejsie API
- Klasy przeniesione do recyclerview-v7:
ListAdapter
- Zajęcia zostały zmienione i przeniesione do recyclerview-v7:
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- Nazwy klas w środowisku wykonawczym stronicowania:
PagedListAdapterHelper
->AsyncPagedListDiffer
Przeniesione klasy były przydatne razem z widokiem RecyclerView niezależnie od biblioteki stronicowania. Oznacza to, że można ich używać bez potrzeby w zależności od wersji alfa strony, ale aplikacje korzystające ze strony również muszą jednocześnie uaktualnić wersję alfa 6 i Bibliotekę pomocy 27.1.0.
** Przewodnik po migracji dla strony alfa 6: **
- Zaktualizuj zależności stronicowania i widoku recyclerview na
android.arch.paging:runtime:1.0.0-alpha6
icom.android.support:recyclerview-v7:27.1.0
- Należy to zrobić jednocześnie, ponieważ element ListAdapter został przeniesiony z sekcji Paging do RecyclerView
- Zaktualizuj odwołania do
ListAdapterHelper
doAsyncListDiffer
- Usunięto
getItem(index)
/getItemCount()
na rzecz wzorca wywoływaniagetCurrentList().getItem(index)
igetCurrentList().size()
, które są bardziej jednoznaczne.
- Usunięto
- Zaktualizuj odwołania do
ListAdapterConfig
doAsyncDifferConfig
- Zaktualizuj odwołania do
DiffCallback
doDiffUtil.IttemCallback
- Zaktualizuj odwołania do
PagedListAdapterHelper
doAsyncPagedListDiffer
- Aktualizacja odwołań do
setList()
dosubmitList()
- została zmieniona w celu wyjaśnienia asynchronicznego charakteru różnic list
Poprawki błędów
- Naprawiono przekazywanie nieprawidłowej pozycji początkowej do początkowego wczytania, gdy wyłączone są obiekty zastępcze. 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 zapisy 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 szybszy. Domyślnie funkcja w sali używa funkcji WAL, jeśli urządzenie ma
API 16
lub więcej pamięci i nie ma mało pamięci. Możesz kontrolować to zachowanie za pomocą metodysetJournalMode()
wRoomDatabase.Builder
. B/67757002Pomoc dotycząca Guawy: pokój obsługuje teraz zwracanie wartości Guava
Optional<T>
lubListenableFuture<T>
wDAO
zapytaniach. Aby użyćListenableFuture<T>
, musisz zaimportowaćguava
artefakt z pokoju (android.arch.persistence.room:guava:1.1.0-alpha2
).Sale mogą teraz zwracać wyniki
java.util.Optional<T>
z poziomuDAO
zapytań.Metody interfejsu z implementacjami domyślnymi są teraz obsługiwane w metodach
@Transaction
w klasachDAO
. Dotyczy to zarównoJava 8
, jak iKotlin
. b/72416735
Poprawki błędów
Konstruktory z atrybutem
@Relation
nie będą powodować błędu kompilacji, jeśli można użyć innego konstruktora. b/72884434Nazwy tabel ze zmianą znaczenia za pomocą funkcji
'
w metodach@Query
mają teraz odpowiednie znaczenie na potrzeby śledzenia unieważnień. b/72366965Usługa Room korzysta teraz z adnotacji Kotlin
@Metadata
do odczytu struktury klas podczas przetwarzania adnotacji. Oznacza to, że nawet jeśli element pojo jest dziedziczony z zależności, nazwy jego parametrów konstruktora mogą zostać prawidłowo odczytane. b/67181813Problem ze znalezieniem ścieżek migracji do starszej wersji został rozwiązany. b/72153525
Niedomyślne typy kolumn są teraz prawidłowo obsługiwane podczas migracji z istniejącej bazy danych do pokoju. b/71953987
Sala prawidłowo obsługuje teraz zachowywanie pól
boolean?
w klasach Kotlin. b/72786402
22 stycznia 2018 r.
Zwolniono cykle życia 1.1.0
, salę 1.1.0-alpha1
i tempo 1.0.0-alpha5
.
Cykl życia 1.1.0
Zmiany w pakiecie
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 w interfejsie API
- Wycofane
LifecycleActivity
iLifecycleFragment
zostały usunięte. Użyj instrukcjiFragmentActivity
,AppCompatActivity
lub pomocyFragment
. - Adnotacje (
@NonNull
) zostały dodane do sekcjiViewModelProviders
iViewModelStores
- Konstruktor
ViewModelProviders
został wycofany – użyj bezpośrednio jego metod statycznych - Interfejs
ViewModelProviders.DefaultFactory
został wycofany – użyj komponentuViewModelProvider.AndroidViewModelFactory
- Dodano statyczną metodę
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
, aby pobierać statyczną metodęFactory
odpowiednią do tworzenia instancjiViewModel
iAndroidViewModel
.
Pokój 1.1.0-alfa1
Nowe funkcje
RawQuery
: ten nowy interfejs API zezwala metodom@Dao
na otrzymywanie SQL jako parametru zapytania b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: ten nowy interfejs API w usłudzeRoomDatabase.Builder
daje bardziej szczegółową kontrolę nad tym, w którym początkowym okresie migracje zawierające niszczycielskie wersje schematu są dozwolone (w porównaniu z faktyczną migrację zastępcząToDestructiveMigrate) b/64989640- Sala obsługuje teraz tylko nowsze interfejsy API stron (w wersji alfa-4 lub nowszej), a wycofane interfejsy
LivePagedListProvider
nie są już obsługiwane. Aby korzystać z nowej wersji alfa pokoju, musisz użyć podziału na stronyalpha-4
lub wyższego poziomu i przejść zLivePagedListProvider
naLivePagedListBuilder
(w miarę możliwości).
Poprawki błędów
- Ulepszona obsługa typów Kotlin Kapt. b/69164099
- Kolejność pól nie unieważnia już schematu. b/64290754
Strona 1.0.0–alfa5
Poprawki błędów
- Naprawianie wczytywania strony, gdy obiekty zastępcze są wyłączone b/70573345
- Dodatkowe logowanie na potrzeby śledzenia błędu b/70360195 związanego z zasadą IllegalArgumentException (oraz spekulacyjna poprawka po stronie pokoju)
- Poprawki przykładowego kodu w języku Javadoc: b/70411933, b/71467637
11 grudnia 2017 r.
Strona alpha4-1
została zwolniona. To jest poprawka błędów strony alfa 4.
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.
Udostępniono stronę alpha4
z poważnymi zmianami i dodatkami. Kierowanie obejmuje głównie sieci, sieci i bazę danych.
Zmiany w interfejsie API
DataSource
to teraz asynchroniczny interfejs API, który ułatwia stronicowanie bezpośrednio z sieci:- Jeden punkt wejścia dla początkowego rozmiaru i danych
- Umożliwia ponawianie próby połączenia z siecią przez wstrzymanie wywołania zwrotnego i wysłanie w późniejszym czasie.
- Wywołania zwrotne Threadsafe umożliwiają asynchroniczne ładowanie przy tworzeniu pojedynczego wspieranego przez sieć
PagedList
w wątku interfejsu użytkownika. - Bardziej przejrzyste zachowanie błędów dotyczących parametrów wstępnego wczytywania
Nazwa
TiledDataSource
została zmieniona naPositionalDataSource
, aby odzwierciedlić indeksowanie oparte na pozycji oraz fakt, że nie jest kafelkowy, gdy symbole zastępcze są wyłączone.Dodano
PageKeyedDataSource
, aby umożliwić obsługę następnych/poprzednich tokenów umieszczonych podczas wczytywania stron sieciowych.KeyedDataSource
zmienił nazwę naItemKeyedDataSource
, aby podkreślić różnicę.LivePagedListBuilder
iDataSource.Factory
zastępująLivePagedListProvider
. Kreator daje te same możliwości, ale pozwala większe dostosowywanie i prostsze ustawienia domyślne. Fabryka pozwala kodowi generowaniaDataSource
zachować niezależność odLiveData
.Dodano
PagedList.BoundaryCallback
na potrzeby bazy danych i sieci.Konstruktor
PagedList.Builder
przyjmuje parametryDataSource
+PagedList.Config
, które są teraz bardziej podobne doLivePagedListBuilder
, i pozwala na operator diamentowy w języku Java lub na wywnioskowane typy w Kotlin.Dodano użytkownika
PagedList.getConfig()
, aPagedList.Config
ma teraz właściwości użytkowników publicznych.KeyedDataSource.loadBefore()
nie oczekuje już odwrócenia wyników.Element
PagedListAdapter.onCurrentListChanged()
został dodany, aby nasłuchiwać aktualizacji, które są wyświetlane na liście PagedList.
Poprawki błędów
- Poprawiono wyjątek IndexOutOfBoundsException w PagedListAdapter(Helper) b/67883658
1.0.0 – 6 listopada 2017 r.
Wszystkie główne komponenty (oprócz stronicowania) mają teraz stan 1.0.0
. Jest to taka sama wersja jak w rc1
, z wyjątkiem jednej zmiany w bibliotece reactivestreams
.
Poprawki błędów
LiveDataReactiveStreams
prawidłowo implementuje teraz specyfikację Strumienie reaktywne. b/67999342
Proponowana wersja – 18 października 2017 r.
Wszystkie główne artefakty (oprócz stronicowania) mają teraz stan 1.0.0-rc1
.
Nie mamy żadnych znanych problemów ani nowych funkcji, które planujemy wprowadzić w wersji 1.0.0
. Uaktualnij projekty, aby używały 1.0.0-rc1
. Pomóż nam
przetestować to rozwiązanie, żebyśmy mogli wysłać solidny 1.0.0
.
Zmiana w działaniu
- W tej wersji usługa
Lifecycle.Event#ON_STOP
jest teraz wysyłana po wywołaniu funkcjionSaveInstanceState
(wcześniej była oznaczona jakoCREATED
bez wysyłaniaON_STOP
). Więcej informacji na ten temat znajdziesz w dokumentacji cyklu życia.
Poprawki błędów
Pokój:
- Pokój zależy teraz od najnowszego artefaktu Xerial, który rozwiązuje problemy z
OutOfMemory
podczas kompilacji. b/62473121 - Do metod
Query
można teraz dodawać adnotacje za pomocą atrybutu@Transaction
. Więcej informacji znajdziesz w dokumentacji@Transaction
. b/65112315 - Klasa
StringUtil
w Room została usunięta z publicznego interfejsu API (nigdy nie miała ona służyć jako publiczny interfejs API).
- Pokój zależy teraz od najnowszego artefaktu Xerial, który rozwiązuje problemy z
Cykle życia:
LiveData
działa prawidłowo, gdy aktywność jest częściowo pokryta przez interfejs API < 24. b/65665621Metody
OnLifecycleEvent
w klasach nadrzędnych są teraz prawidłowo wywoływane lub podczas kompilacji wyświetlane jest ostrzeżenie. b/63474615Cykl życia powoduje teraz powrót do atrybutu
WeakReference
będącego jego właścicielem cyklu życia, aby uniknąć wycieku informacji o wartości cyklu życia, jeśli cykl życia jest przechowywany w pamięci dłużej niż zwykle (jest to tylko zabezpieczenie, nie wyciekaj tutaj elementuLifecycle
).
9 października 2017 r.
Udostępniono tempo alpha-3
, dzięki czemu jest ono zgodne z wersją Cykle życia i pomieszczenia na beta 2
.
Poprawki błędów
- Dokumentacja ulepszonego stronicowania.
5 października 2017 r.
Wszystkie główne artefakty (oprócz stronicowania) mają teraz stan beta 2
.
W tej wersji nie ma nowej wersji stronicowania.
Poprawki błędów
Cykle życia:
- Teraz
LiveDataReactiveStreams
prawidłowo anuluje subskrypcję wydawcy źródłowego, gdy domenaLiveData
jest nieaktywna. b/62609183 - Zdarzenia cyklu życia są prawidłowo rozpowszechniane do klas nadrzędnych, gdy klasa nadrzędna pochodzi z innego modułu. b/63474615
- LiveData prawidłowo obsługuje obserwatorów, którzy rezygnują z subskrypcji podczas tworzenia subskrypcji. b/66337741
FullLifecycleObserver
dla artefaktu języka Java 8 jest teraz dostępny w drzewie zależności. b/66525578W przypadku ProParda dodaj do pliku Prokopard te wiersze. (Nie będzie to konieczne, gdy zostanie wysłany 1.0.0).
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
- Teraz
Pokój:
- Funkcja Room wyświetla teraz błąd w czasie kompilacji, gdy zwrócone pole Pojo w metodzie
@Query
zawiera pole@NonNull
, które nie pasuje do żadnej kolumny w odpowiedzi na zapytanie. Jeśli pole ma wartość@Nullable
, sala wyświetla tylko ostrzeżenie. b/67115337 - Usługa Room weryfikuje indeksy w nowszych wersjach systemów operacyjnych. b/63132683
- Jeśli w Pojo znajduje się wiele pasujących konstruktorów, pokój domyślnie wybiera konstruktor bez argumentu. b/67353427
- Jednokolumnowy klucz podstawowy może mieć postać
Nullable
, jeśli jest toInteger
lubLong
. B/67086876 - Narzędzie do śledzenia unieważnień prawidłowo obsługuje ponowne wprowadzanie danych w trybie testowym. b/65471397
- Funkcja Room sprawdza teraz, czy w nazwach kolumn i tabel nie ma nieprawidłowych znaków podczas kompilacji (nieprawidłowe znaki:
`
,"
). b/64749111
- Funkcja Room wyświetla teraz błąd w czasie kompilacji, gdy zwrócone pole Pojo w metodzie
21 września 2017 r.
W tej wersji wszystkie moduły komponentów architektury docierają do co najmniej beta 1
(z wyjątkiem nowej biblioteki stronicowania, która wynosi alpha 2
).
Nie planujemy dalszych zmian w interfejsie API. Nieplanowane zmiany mogą się zdarzyć, ale słupek związany ze zmianą dowolnego interfejsu API przed wprowadzeniem stabilnej wersji 1.0.0
jest bardzo wysoki i mało prawdopodobne, że wystąpią.
- LifecycleActivity i LifecycleFragment zostaną usunięte przed stabilizacją
1.0.0
. Nie są one potrzebne, gdy używasz Biblioteki pomocy w wersji26.1.0
lub nowszej.
W przeciwieństwie do fazy alfa etap beta będzie trwał bardzo krótko.
Zmiany wersji
- Rozszerzenia cyklu życia i pokoje są teraz
beta 1
- Strona jest teraz ustawiona na:
alpha 2
- Brak zmian w cyklach życia (środowisko wykonawcze, wspólne) i Ar Core (często). Oba 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, wolisz ten artefakt zamiast adnotacji.- Z powodu błędu w
beta1
musisz dodać wyraźną zależność od modułuandroid.arch.lifecycle:common:1.0.1
, aby móc używać nowego artefaktucommon-java8
. Ten problem zostanie rozwiązany wbeta2
.
- Z powodu błędu w
Zmiany w pakiecie
- Element
android.arch.persistence.room.db
został przeniesiony do folderuandroid.arch.persistence.db
- Domena
android.arch.persistence.room.db-impl
została przeniesiona i zmieniona naandroid.arch.persistence.db-framework
Oba te artefakty są już zależne od sali, więc jeśli nie były używane bezpośrednio, nie musisz wprowadzać żadnych zmian w plikach kompilacji.
Zmiany w interfejsie API
Pokój:
- Adnotacja @ColumnInfo umożliwia teraz ustawianie metody porównywania w kolumnie. b/62007004
- Pola
transient
są teraz domyślnie ignorowane, chyba że mają adnotacje@ColumnInfo
,@Embedded
lub@Relation
. B/62600692 - Klucze podstawowe muszą mieć adnotacje
@NonNull
, chyba że są generowane automatycznie. b/64292391- Ta zmiana może wymagać migracji schematu. Przepraszamy za niedogodności.
- Dodaliśmy nową adnotację dogodną (@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
Strona:
- Ulepszona dokumentacja stron z większą liczbą przykładów i adnotacjami 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
- Podział na strony:
- Artefakt strony nie zależy już od jednostki junit. b/65690261
1.0.0 Alpha 9–1 – 13 września 2017 r.
To jest główna wersja, w której podstawowe artefakty cyklu życia (czas działania, typowe) i rdzeń łuku (wspólne) osiągają stabilną wersję 1.0.0
.
W związku z tą zmianą biblioteka pomocy w wersji 26.1.0 zależy teraz od tych bibliotek. Zarówno AppCompatActivity, jak i fragment kodu pomocy implementują teraz interfejs LifecycleOwner.
Aby można było korzystać z nowej integracji, ta wersja wymaga też użycia biblioteki pomocy 26.1.0
.
Nowa biblioteka: stronicowanie
Ta wersja zawiera również nową bibliotekę o nazwie Paging, która w razie potrzeby umożliwia łatwe wczytywanie dużych zbiorów danych do widoku RecyclerView. Paging jest dostępny jako alpha1
i będzie miał własny cykl wydania.
Zmiany w interfejsie API
- Te klasy zostały wycofane i zostaną usunięte w kolejnej wersji:
Poprawki błędów
Wygenerowane klasy są teraz oznaczone adnotacją
@Generated
, jeśli aplikacja ma odpowiednią adnotację w ścieżce klasy. b/35754819Naprawiliśmy błąd związany z porównywaniem obserwatorów w usłudze MediatorLiveData. b/64413274
[LiveData] obsługuje teraz zapytania SQLite
WITH
. [ref-LiveData] b/62510164Naprawiono błąd, który powodował, że element invalidationTracker nie wysyłał właściwej listy w przypadku zarejestrowania więcej niż jednej tabeli. b/65099281
Naprawiono błąd, który powodował generowanie różnych plików w systemie Windows przez pokój. b/64470691
Obiekty LifecycleObservers w pakiecie głównym są teraz obsługiwane. b/62310817
1.0.0 alfa 9 – 16 sierpnia 2017 r.
Poprawki błędów
- Naprawiliśmy błąd w funkcji LiveData, który powodował, że drugi obserwator był ignorowany, gdy pierwszy z nich został usunięty ze metody
onChanged
. b/64285805
1.0.0 alfa 8 – 1 sierpnia 2017 r.
Zmiany w działaniu
- W przypadku kolumn typów podstawowych lub kolumn z adnotacjami NonNull dodano ograniczenie
NOT NULL
. Spowoduje to zmianę struktury tabel, więc jeśli korzystasz już z komponentów Architecture Komponent w wersji alfa lub starszej, musisz wdrożyć migrację, jeśli chcesz zachować dane, lub użyć metodyfallbackToDestructiveMigration()
w kreatorze. b/62007004
Zmiany w interfejsie API
- SupportSQLiteProgram obsługuje teraz funkcję AutoCloseable. b/63131997
1.0.0 alfa 7 – 26 lipca 2017 r.
Poprawki błędów
Naprawiono krytyczny błąd w metodzie LifecycleRegistry
removeObserver
, który spowodował uszkodzenie odczytu LifecycleObserver.Usunięto problem z unieważnianiem niestandardowych baz danych b/63162311
1.0.0 alfa 6 – 25 lipca 2017 r.
Zmiany w działaniu
Zmieniono kolejność wywołań narzędzia LifecycleObserver. Wcześniej obserwatorzy byli zawsze wywoływani w kolejności ich dodania: jeśli zdarzenie
observer1
zostało dodane przedobserver2
, otrzyma zdarzenieON_CREATE
i wszystkie pozostałe zdarzenia przedobserver2
. Nie dotyczy to już zdarzeń zniszczenia, dla których obserwatorzy są wywoływane w odwrotnej kolejności dodawania. Obecne działanie wygląda więc tak: jeśli zdarzenieobserver1
zostało dodane przedobserver2
, toON_CREATE
jest wysyłane najpierw doobserver1
, a potem doobserver2
(to samo dzieje się w przypadkuON_START
iON_RESUME
), ale zdarzenieON_PAUSE
jest wysyłane jako pierwsze doobserver2
, a potem tylko doobserver1
(to samo dotyczy ustawieńON_STOP
iON_DESTROY
).Jeśli brakuje migracji, sala zgłasza wyjątek. Wcześniej usługa Room wyczyściła tylko bazę danych, ale teraz ulega awarii. Deweloperzy mogą wyrazić zgodę na działanie czyszczenia, wywołując interfejs API kreatora. b/63872392
Zmiany w interfejsie API
Do narzędzia
RoomDatabase.Builder
dodano metodęfallbackToDestructiveMigration()
, która pozwala wyczyścić bazę danych w razie braku migracji. b/63872392Komponenty architektury zależą teraz od biblioteki pomocy 26.0.0
Poprawki błędów
Poprawiono obsługę elementu @Relation zagnieżdżonego w elemencie @Embedded. b/63736065
Naprawiono migracje testowe dla tabel z automatycznie przyrostowym kluczem podstawowym. b/63393618
Teraz @Zapytania, które uruchamiają zapytania DELETE lub UPDATE, prawidłowo otrzymują argumenty. b/63872538
Obecnie obiekty ViewModels są zachowywane, gdy fragment właściciela znajduje się w wstecznym stosie, a zmiana konfiguracji następuje 2 razy. b/38445801
1.0.0 alfa 5 – 18 lipca 2017 r.
Zmiany w interfejsie API
Do narzędzia
RoomDatabase.Builder
dodaliśmy nową metodę wywołania zwrotnego, która umożliwia sprawdzanie, kiedy baza danych została utworzona lub otwarta. b/62699324Wyrażenie @Query może teraz zwracać zwracany kod RxJava
Maybe
lubSingle
. b/62231019
Aby dodać obsługę RxJava do pokoju, musisz korzystać z artefaktu android.arch.persistence.room:rxjava2
.
Poprawki błędów
Poprawiono zapytania
@Delete
bez parametrów. b/63608092Naprawiono sprawdzanie typu pomieszczenia w przypadku metod pobierania i ustawiania. b/63733651
1.0.0 alfa 4 – 11 lipca 2017 r.
Zmiany w interfejsie API
Do bazy danych RoomDatabase dodaliśmy nową metodę zapewniającą wygodę (
runInTransaction()
).Metody
@Insert
,@Delete
i@Update
mogą teraz zawierać parametry z różnych typów encji. b/62682405
Poprawki błędów
Poprawiono obsługę
byte[]
w metodach@Dao
. b/62460045Sprawdzanie migracji w sali konferencyjnej używa teraz porównania bez rozróżniania wielkości liter. b/62875382
Naprawiono konfigurację Pro4ard dla artefaktu Cykl życia. b/62113696
1.0.0 Alpha 3 – 15 czerwca 2017 r.
Zmiany w interfejsie API
@OnLifecycleEvent
obsługuje obecnie tylko 1 parametr zdarzenia. Jest to zmiana w ramach przygotowań do obsługi języka Java 8, która pozwoli nam w przyszłości przeprowadzić migrację do interfejsów z metodami domyślnymi. W związku z tą zmianą tylko metody z adnotacjami@OnLifecycleEvent(ON_ANY)
mogą otrzymać drugi parametr typuEvent
(pierwszy parametr toLifecycleOwner
). Szczegółowe informacje znajdziesz w dokumentacji Cykl życia.Klasy
LifecycleActivity
iLifecycleFragment
są przenoszone do artefaktuandroid.arch.lifecycle:extensions
.Aby odczytać schemat z zasobów testowych i utworzyć bazę danych w kontekście aplikacji, migracjaTestHelper otrzymuje instancję Instrumentation zamiast
Context
.Adnotacje
@Insert
,@Delete
i@Update
w metodach@DAO
mogą teraz mieć typ parametruIterable
. b/62259820
Poprawki błędów
Zastąpione metody ze zdarzeniami cyklu życia nie są już wywoływane wiele razy.
Wiele parametrów
IN
jest teraz obsługiwanych prawidłowo. b/62608681Abstrakcyjne klasy DAO mogą teraz mieć konstruktor, który odbiera wystąpienie
@Database
. b/38488747Obiekty
DAO
mogą teraz mieć superklasę/interfejs z parametrami typu. b/62103620
1.0.0 Alpha 2 – 2 czerwca 2017 r.
Zmiany w interfejsie API
Wywołanie zwrotne InvalidationTracker otrzymuje teraz listę zmienionych nazw tabel. (b/38468740)
Zmniejszono powierzchnię interfejsu API klasy SupportSQLiteDatabase. (b/38481640)
Poprawki błędów
- Pliki Proguard dla cykli życia. (b/62113696)
- Utrata danych w przypadku konwersji typów. (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
Przed premierą przeprowadziliśmy wiele testów, ale Komponenty architektury są obecnie w wersji alfa. Jeśli tworzysz aplikację w wersji produkcyjnej, pamiętaj, że interfejs API zmieni się przed wersją 1.0 i może nie być w pełni kompletny. Jeśli nie potrafisz debugować problemów w bibliotekach, których używasz, zalecamy najpierw wypróbowanie komponentów architektury w projektach pobocznych.
Nie zalecamy przeprowadzania migracji już dziś. Przygotowaliśmy przewodnik po migracji dla komponentów architektury w wersji 1.0.
Znane ograniczenia i problemy
- Cykl życia
Fragment
iActivityCompat
w bibliotece pomocy nie implementują jeszcze interfejsuLifecycleOwner
. Spowoduje to, że komponent Architektura osiągnie wersję 1.0.0.