Cykl życia
Ta tabela zawiera listę wszystkich artefaktów w grupie androidx.lifecycle.
| Artefakt | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| lifecycle-* | 2.11.0 | - | - | 2.12.0-alpha04 |
| lifecycle-viewmodel-navigation3 | 2.11.0 | - | - | 2.12.0-alpha04 |
Deklarowanie zależności
Aby dodać zależność od komponentu Lifecycle, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.12.0-alpha04" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.12.0-alpha04") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.12
Wersja 2.12.0-alpha04
23 września 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.12.0-alpha04 Wersja 2.12.0-alpha04 zawiera te zmiany.
Wersja 2.12.0-alpha03
9 września 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.12.0-alpha03 Wersja 2.12.0-alpha03 zawiera te zmiany.
Poprawki błędów
compileSdkbibliotek Compose zaktualizowanych do wersji 37.1. Wymaga to przechodniego zaktualizowaniacompileSdkwe wszystkich aplikacjach i bibliotekach korzystających z Compose. (I05b0f)
Wersja 2.12.0-alpha02
26 sierpnia 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.12.0-alpha02 Wersja 2.12.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano metody
AutoRecreatedirunOnNextRecreationna rzecz metodSavedStateProvideriSavedStateRestorer. (Iadc00)
Wersja 2.12.0-alpha01
12 sierpnia 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.12.0-alpha01 Wersja 2.12.0-alpha01 zawiera te zmiany.
Poprawki błędów
- Wycofaj procesor adnotacji
lifecycle-compiler. Zamiast procesora adnotacji używajDefaultLifecycleObserverlubLifecycleEventObserver. (Ibf571, b/541926513) - Funkcje
SavedStateViewModelFactoryiAbstractSavedStateViewModelFactorynatychmiast zwracają błąd, jeśli podany elementSavedStateRegistryOwnernie implementuje interfejsuViewModelStoreOwner, co zapobiega opóźnionym awariom podczas ponownego tworzenia komponentu. (Icf317) - Dodaj śledzenie systemu do wysyłania zdarzeń
LifecycleRegistry. (Ie1f92, b/112161409)
Wersja 2.11
Wersja 2.11.0
17 czerwca 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0 Wersja 2.11.0 zawiera te zmiany.
Ważne zmiany od wersji 2.10.0:
Scoped ViewModels w Compose – wprowadzenie adnotacji ViewModelStoreProvider, rememberViewModelStoreProvider i rememberViewModelStoreOwner, które umożliwiają powiązanie ViewModels z określonymi zakresami interfejsu (np. stronami w Pagerze). Przetrwają one zmiany konfiguracji i zostaną automatycznie wyczyszczone, gdy element kompozycyjny zostanie usunięty z hierarchii.
Obsługa KMP – ViewModel-Compose i ViewModel-Navigation3 obsługują teraz wszystkie platformy Kotlin Multiplatform.
Integracja z Navigation3 – ViewModelStoreNavEntryDecorator akceptuje teraz ViewModelStoreOwner do propagowania CreationExtras i fabryk do zagnieżdżonych elementów ViewModel. Możesz też podnosić dostawców za pomocą nowego przeciążenia rememberViewModelStoreNavEntryDecorator, aby obsługiwać wiele stosów wstecznych. Środowisko wykonawcze removeViewModelStoreOnPop zostało wycofane.
Lifecycle Utilities – dodano rozszerzenie ViewModelProvider.get<VM>(key), rozszerzenie Lifecycle.addObserver oparte na lambdzie i domyślne rozszerzenia fabryczne dla ViewModelStoreOwner. ViewModel.onCleared jest teraz oznaczony(a) adnotacją @EmptySuper.
Inne zmiany – interfejs Compose 1.7.0+ jest teraz wymagany w przypadku LocalLifecycleOwner, aby usunąć rezerwowe odbicia. Aktualizacje Compose compileSdk wymagają AGP w wersji co najmniej 9.2.0.
Wersja 2.11.0-rc01
3 czerwca 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-rc01 Wersja 2.11.0-rc01 zawiera te zmiany.
Wersja 2.11.0-beta02
19 maja 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-beta02 Wersja 2.11.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj przeciążenie
rememberViewModelStoreNavEntryDecorator, które akceptujeViewModelStoreProvider. Umożliwia to deweloperom przeniesienie dostawcy ponad zakres kompozycji dekoratora, co pozwala na obsługę wielu stosów wstecznych, w których ten sam wpis występuje w obu, ale wymaga oddzielnego stanu. (Ibbbfe, b/503420425) - Zapobiega przedwczesnemu usuwaniu udostępnionych
ViewModels, gdy z kompozycji zostanie usunięty powiązany dostawca. (Ib321a)
Poprawki błędów
- Aby korzystać z usługi
LocalLifecycleOwner, musisz mieć interfejs Compose UI w wersji 1.7.0 lub nowszej. Usuwa to wewnętrzne rezerwowe mechanizmy odbicia, co zwiększa wydajność, ale wymusza ścisłą aktualizację zależności w przypadku klientów. (I48e65) - Zapobieganie duplikowaniu symboli w starszych wersjach forka JetBrains podczas uaktualniania do Compose Multiplatform 1.11.0. (Iccd64)
- Rozwiązaliśmy problem, który powodował nieprawidłowe czyszczenie
ViewModelspodczas rekompozycji w przypadku używaniarememberViewModelStoreProviderz niestabilnymi parametrami domyślnymi. Dostawca odtwarza teraz tylko wtedy, gdy zmieni się właściciel nadrzędny lub jawny klucz. (Ibe296, b/501792448)
Wersja 2.11.0-beta01
22 kwietnia 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-beta01 Wersja 2.11.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Podziel funkcje
rememberViewModelStoreOwnerirememberViewModelStoreProviderna osobne funkcje dla przypadków użycia z kluczem i bez klucza. (Ifd154, b/500802788)
Poprawki błędów
- Zaktualizowano Compose
compileSdkdo interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd, b/413674743)
Wersja 2.11.0-alpha03
25 marca 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-alpha03 Wersja 2.11.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Ustaw
parentKeyjako opcjonalny parametr w konstruktorachViewModelStoreProvider, domyślnie ustawiając go nanull, i przenieś go zaparentStorelubparentOwner. Upraszcza to tworzenie instancji, gdy nie jest potrzebny klucz zakresu udostępnionego. (I66b67) ViewModelStoreNavEntryDecoratorakceptuje terazViewModelStoreOwnerzamiastViewModelStore. Umożliwia to bibliotece Navigation3 propagowanie domyślnych wartościCreationExtrasiViewModelProvider.Factoryrodzica do zagnieżdżonych obiektów ViewModel, co zapewnia obsługę zależności na poziomie aplikacji. (Ia6018, b/434651920)- Izoluj stan
ViewModelStoreProviderza pomocą unikalnego klucza. Zapobiega to przypadkowemu usuwaniu przez dostawców rodzeństwa swoich obiektów ViewModel podczas zwalniania zasobów. (I59c0b, b/434651920) - Dodaj funkcję rozszerzenia
ViewModelProvider.get<VM>(key: String). Umożliwia to deweloperom łatwiejsze pobieranie obiektów ViewModel za pomocą niestandardowegokeyz parametrami typu reifikowanego Kotlin, co eliminuje konieczność jawnego przekazywania typu klasy. (Ic1f59) - Dodaj obsługę
defaultArgsdoViewModelStoreProvider, aby umożliwić inicjowanie obiektów ViewModel z domyślnymi wartościamiSavedState. (I1e933, b/434651920, b/165642391) - Wycofaj
removeViewModelStoreOnPopi powiązany z nimViewModelStoreNavEntryDecoratorDefaults. Ten interfejs API był obejściem zmian konfiguracji, które są teraz obsługiwane wewnętrznie. Wszystkie stany dekoratora, w tym obiekty ViewModel, muszą być teraz usuwane w tym samym czasie po zamknięciu. Aby zachować stan dekoratora poza momentem, w którym stos wsteczny jest przekazywany do NavDisplay, użyj interfejsurememberDecoratedNavEntriesAPI. (I852d9)
Poprawki błędów
- Dodaj
toString()doCreationExtras.Key, aby wyświetlić nazwę zajęć. (I5de52)
Wersja 2.11.0-alpha02
11 marca 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-alpha02 Wersja 2.11.0-alpha02 zawiera te zmiany.
Scoped ViewModels
W tej wersji wprowadziliśmy interfejsy API do tworzenia instancji
ViewModelStorew Compose. Umożliwia to powiązanieViewModelsz konkretnymi zakresami interfejsu (np. z poszczególnymi stronamiPagerlub elementamiLazyList). TeViewModelsprzetrwają zmiany konfiguracji i zostaną automatycznie wyczyszczone, gdy odpowiadający im komponent Composable zostanie trwale usunięty z hierarchii.// Hoist the parent provider outside the Pager. val provider = rememberViewModelStoreProvider() val pagerState = rememberPagerState(pageCount = { 5 }) HorizontalPager(state = pagerState) { page -> // Create an owner scoped to the current page. val storeOwner = rememberViewModelStoreOwner(provider, key = page) // Provide the scoped owner to this composition. CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) { // ViewModel is now scoped specifically to this page. val viewModel: PageViewModel = viewModel() } }
Pamiętaj, że ViewModelStoreProvider jest dostępny poza Compose i może być używany z aktywnościami, fragmentami lub widokami.
Nowe funkcje
- Dodanie obsługi wszystkich platform docelowych KMP do ViewModel Navigation3. (I60fa5)
- Dodaj funkcje fabryczne dla
LifecycleOwner,ViewModelStoreOwneriSavedStateRegistryOwner, aby zmniejszyć ilość kodu szablonowego podczas tworzenia niestandardowych komponentów właściciela. (I9682c) - Dodaj funkcję rozszerzenia
Lifecycle.addObserveropartą na lambdzie, aby umożliwić obserwowanie zdarzeń cyklu życia bez tworzenia instancji obiektu anonimowego. (I94f38) - Dodaj rozszerzenia
defaultViewModelProviderFactoryidefaultViewModelCreationExtrasdo kampaniiViewModelStoreOwner. Zapewniają bezpieczny dostęp do wartości domyślnych bez konieczności ręcznego sprawdzania typów w odniesieniu doHasDefaultViewModelProviderFactory. (Ifa83d)
Zmiany w interfejsie API
- Dodaj
rememberViewModelStoreOwner, aby łatwo tworzyćViewModelStoreOwnerw Compose. Ta funkcja zwraca właściciela powiązanego z cyklem życia komponentu, automatycznie czyszcząc jego obiekty ViewModel, gdy komponent zostanie usunięty z interfejsu. (I2a15b, b/165642391) - Dodaj
rememberViewModelStoreProvider, aby umożliwić tworzenie instancjiViewModelStoreo ograniczonym zakresie w Compose. Ta funkcja łączy sklep podrzędny z właścicielem nadrzędnym, dzięki czemu obiekty ViewModel przetrwają zmiany konfiguracji, a gdy funkcja Composable zostanie usunięta z hierarchii, zostaną automatycznie wyczyszczone. (I0f57a, b/165642391) - Dodaj
ViewModelStoreProvider, aby zarządzać instancjami z określonym zakresemViewModelStore. Ta klasa umożliwia tworzenie zakresów podrzędnych, które przetrwają zmiany konfiguracji, ale można je niezależnie wyczyścić. Zawiera teżViewModelStoreOwnerotoczki, które dziedziczą domyślne fabryki i dodatki do tworzenia z elementu nadrzędnego. (I87f4f, b/434651920)
Wersja 2.11.0-alpha01
25 lutego 2026 r.
Publikacja androidx.lifecycle:lifecycle-*:2.11.0-alpha01 Wersja 2.11.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Obsługa wszystkich platform Kotlin Multiplatform (KMP) w ViewModel-Compose. Oddzielenie określania właściciela od
LocalView, aby umożliwić hostom platformy udostępnianie domyślnegoViewModelStoreOwnerprzy zachowaniuLocalViewjako bezpiecznego rozwiązania rezerwowego na Androidzie. (I09fab, b/434940570, Ic8526, b/478146897)
Zmiany w interfejsie API
- Dodaj implementację
toStringdoViewModelStore, która zawiera listę wszystkich zapisanych kluczy, aby ułatwić debugowanie. (I0a6f4) - Dodaj domyślną implementację dla
HasDefaultViewModelProviderFactory.defaultViewModelProviderFactory, co oznacza, że podczas implementowania interfejsu nie musisz już jawnie zastępować tej właściwości. (Ia7095) - Dodaj do adnotacji
ViewModel.onClearedadnotację@EmptySuper, aby wyraźnie wskazać, że metody zastępujące nie muszą wywoływaćsuper.onCleared(). (I8c226)
Wersja 2.10
Wersja 2.10.0
19 listopada 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0 Wersja 2.10.0 zawiera te zmiany.
Ważne zmiany od wersji 2.9.0:
Dodaj funkcję kompozycyjną
rememberLifecycleOwner, aby umożliwić tworzenie cykli życia o określonym zakresie bezpośrednio w interfejsie. Jest to przydatne w przypadku komponentów, które muszą zarządzać własnym cyklem życia niezależnie, np. w przypadku komponentuHorizontalPager, który chce, aby tylko bieżąca strona byłaRESUMED, lub bibliotek takich jak Navigation3:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }Artefakt
lifecycle-viewmodel-navigation3zapewnia gotową integrację z Navigation3, co umożliwia włączenie zakresu instancjiViewModeldla poszczególnych ekranów („wpisów”) za pomocą interfejsurememberViewModelStoreNavEntryDecorator()API:@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }Dodaj funkcję fabryki konstruktora dla
CreationExtras, która zapewnia wygodniejszy i bardziej idiomatyczny interfejs Kotlin API.override val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }Dodaliśmy natywną obsługę typów dopuszczających wartość null w
SavedStateHandle.saved, co upraszcza zapisywanie i przywracanie właściwości dopuszczających wartość null.Oznacz konstruktory
SavedStateHandlejako@VisibleForTesting.Wartość minSdk została zmieniona z API 21 na API 23.
Wersja 2.10.0-rc01
5 listopada 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-rc01 Wersja 2.10.0-rc01 zawiera te zmiany.
Wersja 2.10.0-beta01
22 października 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-beta01 Wersja 2.10.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Nazwa
ViewModelStoreNavEntryDecoratorDefaultzostała zmieniona naViewModelStoreNavEntryDecoratorDefaults. (I6d27b, b/444447434)
Poprawki błędów
rememberLifecycleOwnernie ulega już awarii, jeśli właściciel otrzyma zdarzenieLifecycle.Event.ON_DESTROYprzed przejściem doLifeycle.State.CREATED. (I6f98e, b/444594991)
Wersja 2.10.0-alpha05
8 października 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-alpha05 Wersja 2.10.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wartość
removeViewModelStoreOnPopCallback()jest teraz częścią obiektuViewModelStoreNavEntryDecoratorDefault, w którym inne platformy i implementacje mogą wywoływać wartość domyślną. (Ia1f23, b/444447434) - Zmieniliśmy
ViewModelStoreNavEntryDecoratorz funkcji na klasę, aby lepiej odzwierciedlała jej funkcjonalność jako fabrykiNavEntryDecorator, a parametr dekoratorashouldRemoveViewModelStorezmieniliśmy naremoveViewModelStoreOnPop, aby wyjaśnić, że to wywołanie zwrotne jest wywoływane tylko wtedy, gdy wpis jest usuwany zbackStack. (Iefdc5, b/444447434)
Wersja 2.10.0-alpha04
24 września 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-alpha04 Wersja 2.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Refaktoryzuj funkcję kompozycyjną
LifecycleOwnernarememberLifecycleOwner. Funkcja zwraca teraz bezpośrednio wartośćLifecycleOwner. Aby przekazać tego właściciela do kompozycji podrzędnej, użyj atrybutuCompositionLocalProvider. (Ic57f0, b/444446629) - Dodaj do lifecycle-viewmodel-navigation3 stuby KMP, aby umożliwić JetBrains dostarczanie rozwidleń, które wypełniają te cele, a tym samym obsługują CMP. (I44a4c)
Wersja 2.10.0-alpha03
27 sierpnia 2025 roku
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-alpha03 Wersja 2.10.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizuj Compose do wersji 1.9.0. (I2b9de)
Wersja 2.10.0-alpha02
13 sierpnia 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-alpha02 Wersja 2.10.0-alpha02 zawiera te zmiany.
Nowe funkcje
Funkcja
LifecycleOwnermoże teraz tworzyć samodzielny cykl życia głównego elementu. Gdy jawnie ustawiszparent = null, nowy cykl życia działa niezależnie od hosta (np.Activity,FragmentlubNavBackStackEntry). Rozpoczyna się, gdy funkcja kompozycyjna wchodzi w skład kompozycji, i jest automatycznie niszczona, gdy z niej wychodzi. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Zmiany w interfejsie API
- W funkcji kompozycyjnej
LifecycleOwnerparametrparentLifecycleOwnerzostał zmieniony naparent. (I080bc)
Poprawki błędów
LifecycleOwner– komponent kompozycyjny prawidłowo przenosi swój cykl życia do stanuDESTROYEDpo usunięciu. Zapobiega to potencjalnym wyciekom w przypadku kodu zewnętrznego, który zawiera odwołanie do cyklu życia. (I9e5b7, b/433659048)- Przeniesienie domyślnego minSdk z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Wkład zewnętrzny
- Usuń z
LifecycleOwnerniepotrzebne wewnętrzne pola pomocnicze. Dziękujemy Jake’owi Whartonowi za pomoc. (Ideddb)
Wersja 2.10.0-alpha01
30 lipca 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.10.0-alpha01 Wersja 2.10.0-alpha01 zawiera te zmiany.
Nowe funkcje
Dodaj funkcję kompozycyjną
LifecycleOwner, aby umożliwić tworzenie cykli życia o określonym zakresie bezpośrednio w interfejsie. Jest to przydatne w przypadku komponentów, które muszą zarządzać własnym cyklem życia niezależnie od innych. Przykład integracji tego nowego komponentu z Navigation3 znajdziesz w aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Zmiany w interfejsie API
- Dodaj funkcję fabryki konstruktora dla
CreationExtras, która zapewnia wygodniejszy i bardziej idiomatyczny interfejs Kotlin API. (Iab2bd) - Dodaliśmy natywną obsługę typów dopuszczających wartość null w
SavedStateHandle.saved, co upraszcza zapisywanie i przywracanie właściwości dopuszczających wartość null. (I54d69, b/421325690) - Oznacz zespoły
SavedStateHandlejako@VisibleForTesting. (Iff0e0, b/408002794)
Wersja 2.9
Wersja 2.9.4
17 września 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.4 Wersja 2.9.4 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd polegający na tym, że wtyczka Compose Compiler nie była stosowana, co powodowało uszkodzenie artefaktów Lifecycle KMP. (Ie95bc, b/443096483, b/443965665)
Wersja 2.9.3
27 sierpnia 2025 roku
Publikacja androidx.lifecycle:lifecycle-*:2.9.3 Wersja 2.9.3 zawiera te zmiany.
Nowe funkcje
- Dodaj nowe platformy Kotlin Multiplatform (KMP) do artefaktów cyklu życia
*-compose. Biblioteka Lifecycle obsługuje teraz te platformy: JVM (Android i komputery), Native (Linux, iOS, watchOS, macOS, MinGW) i Web (JavaScript, WasmJS). (I0a0e4)
Poprawki błędów
- Zaktualizuj
androidx.annotationdo wersji 1.9.1 (Ic9e4f, b/397701294)
Wersja 2.9.2
16 lipca 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.2 Wersja 2.9.2 zawiera te zmiany.
Poprawki błędów
- Dodaliśmy nowe platformy Kotlin Multiplatform (KMP) do artefaktów Lifecycle. Biblioteka Lifecycle obsługuje teraz te platformy: JVM (Android i komputery), Native (Linux, iOS, watchOS, macOS, MinGW) i Web (JavaScript, WasmJS). Pamiętaj, że do artefaktów
*-composenie dodano żadnych nowych środowisk docelowych KMP, ponieważ zależy to od stabilnej wersji Compose 1.9. (I01cb8).
Aktualizacje zależności
- Cykl życia zależy teraz od adnotacji
1.9.1, aby umożliwić obsługę nowych platform KMP (Ic9e4f, b/397701294).
Wersja 2.9.1
4 czerwca 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.1 Wersja 2.9.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązywanie problemu z nieusuwaniem stanów
SavedStateHandle.getMutableStateFlow(key)przezSavedStateHandle.remove(key). (d5f939, b/418746333)
Wersja 2.9.0
7 maja 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0 Wersja 2.9.0 zawiera te zmiany.
Ważne zmiany od wersji 2.8.0
- Dostępny jest nowy artefakt
androidx.lifecycle:lifecycle-viewmodel-testingKMP, który zawiera klasęViewModelScenariodo testowaniaViewModelsw izolacji, z obsługąonClearediSavedStateHandle, a także testowania procesu zakończenia i ponownego utworzenia za pomocąrecreate(). - Dodaj
getMutableStateFlowdoSavedStateHandle, aby zwrócićMutableStateFlow. Ta nowa funkcja jest dostępna tylko w przypadku kluczy i nie można jej używać zgetLiveData. Jeśli spróbujesz użyć obu tych metod do uzyskania dostępu do tego samego stanu, zostanie zgłoszony wyjątek. CreationExtraszawiera teraz podobne do mapy przeciążenia operatorów, które umożliwiają idiomatyczne manipulowanie treściami w Kotlinie. Umożliwia korzystanie zin,+=i+wCreationExtras.
Obsługa serializacji KotlinX
Dzięki obsłudze serializacji KotlinX dodanej w SavedState
1.3.0wprowadziliśmysaved, delegata właściwości leniwej, aby ułatwić przechowywanie klas@SerializablewSavedStateHandlei automatyczne przywracanie tych klas po śmierci procesu i ponownym utworzeniu. Pamiętaj, żesaveddelegat jest leniwy i nie wywoła lambdyinitani nie zapisze niczego wSavedStateHandle, dopóki nie zostanie do niego uzyskany dostęp.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- Moduł
lifecycle-testingjest teraz zgodny z KMP, w tym z interfejsami API, takimi jakTestLifecycleOwner. - Moduł
lifecycle-viewmodel-savedstatejest teraz zgodny z KMP, w tym z interfejsami API, takimi jakSavedStateHandle. androidx.compose.ui.platform.LocalLifecycleOwnerjest teraz dostępny w wspólnym zestawie źródeł.NewInstanceFactoryjest teraz dostępny na platformach JVM Desktop i Android.
Zmiany w zachowaniu
- Stan
Lifecycle.DESTROYEDjest stanem końcowym, a każda próba przeniesienia z niego elementuLifecycledo innego stanu spowoduje teraz wystąpienie błęduIllegalStateException. SavedStateHandlenie zawiera już żadnychSavedStateProvider.saveState(), w których zwróconyBundlejest pusty.
Wersja 2.9.0-rc01
23 kwietnia 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-rc01 Wersja 2.9.0-rc01 zawiera te zmiany.
Ostrzeżenie o zgodności interfejsu API Lint
- Firma JetBrains zmieniła
KaCallableMemberCallz klasy na interfejs, co powoduje utratę zgodności binarnej. Może to powodować awarie, jeśli wersja AGP w projekcie różni się od wersji użytej do skompilowania testów lint. Ta aktualizacja została wprowadzona w aosp/3577172, ale nie było jej w informacjach o wersji – wyjaśniamy to tutaj. Zalecane rozwiązanie: zaktualizuj AGP do najnowszej stabilnej wersji. Jeśli nie możesz w pełni zaktualizować wersji, użyjandroid.experimental.lint.version, aby dostosować sprawdzanie kodu do wersji AGP. Więcej informacji znajdziesz w artykule Zmiany w działaniu środowiska wykonawczego Compose.
Wersja 2.9.0-beta01
9 kwietnia 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-beta01 Wersja 2.9.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
Lifecycle ViewModel Composekorzysta teraz z tej samej konfiguracji Kotlin Multiplatform co Compose Runtime w wersji 1.7.1 i nowszej – artefakty-desktopzostały usunięte, a dodano artefakty-jvmStubsi-linuxx64Stubs. Żaden z tych celów nie jest przeznaczony do użycia. Są to tylko symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose. (I5cb14, b/406592090)
Aktualizacje zależności
- Ta biblioteka jest teraz kierowana na poziom języka Kotlin 2.0 i wymaga KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
Lifecycle ViewModel Composezależy teraz od Compose w wersji 1.7.8. (I5cb14, b/406592090)
Wersja 2.9.0-alpha13
26 marca 2025 r.
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 zostaje opublikowana bez znaczących zmian publicznych. Wersja 2.9.0-alpha13 zawiera te zmiany.
Wersja 2.9.0-alpha12
12 marca 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha12 Wersja 2.9.0-alpha12 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj adnotację
@MainThreaddoViewModelProvider.getna wszystkich obsługiwanych platformach KMP. (I7e8dd, b/397736115) - Zmień nazwę
SavedState*DelegatesnaSavedState*Delegate. (I8589b, b/399629301)
Wersja 2.9.0-alpha11
26 lutego 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha11 Wersja 2.9.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj parametr
SavedStateConfigdo delegatówsaved()(I39b3a)
Wersja 2.9.0-alpha10
12 lutego 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha10 Wersja 2.9.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Przenieś
MutableStateSerializerzlifecycle-viewmodel-composedosavedstate-compose. (I4f690, b/378895074)
Wkład zewnętrzny
- Dodaje nowy problem Lint dotyczący wywoływania funkcji
Lifecycle::currentStatew kompozycji. Zamiast tego sugeruje użycie funkcjicurrentStateAsalue().value, aby mieć pewność, że zmiany stanu cyklu życia prawidłowo powodują ponowne komponowanie. Dziękujemy Stevenowi Schoenowi! (Iad484)
Wersja 2.9.0-alpha09
29 stycznia 2025 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha09 Wersja 2.9.0-alpha09 zawiera te zmiany.
Nowe funkcje
- Dodaj
MutableStateSerializerdo serializacjiandroidx.compose.runtime.MutableState. (Idfc48, b/378895074)
Zmiany w interfejsie API
- Zastąpienie przeciążonych funkcji delegata
SavedStateHandle.saved()parametrami domyślnymi (Icd1c1) - Funkcja
AbstractSavedStateViewModelFactoryzostała wycofana, ponieważ tworzySavedStateHandledla każdegoViewModel, co powoduje niepotrzebne obciążenie. Aby skuteczniej tworzyćViewModel, używaj zamiast tego atrybutuViewModelProvider.Factoryz atrybutemCreationExtras.createSavedStateHandle. (Ia920b, b/388590327)
Wersja 2.9.0-alpha08
11 grudnia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha08 Wersja 2.9.0-alpha08 zawiera te zmiany.
Nowe funkcje
- Dodaj
ViewModelScenario.recreate, aby zasymulować zakończenie procesu systemowego, odtwarzającViewModelw trakcie testu i wszystkie powiązane komponenty. (Id6a69, b/381063087) - Instancje
LifecycleOwneriViewModelStoreOwnerpobrane za pomocą odpowiednich interfejsów APIfindViewTreemożna teraz rozwiązywać za pomocą rozłącznych elementów nadrzędnych widoku, np.ViewOverlay. Więcej informacji o rozłącznych elementach nadrzędnych widoku znajdziesz w informacjach o wersji podstawowej lub w dokumentacji wViewTree.setViewTreeDisjointParent. (I800f4)
Zmiany w interfejsie API
- Ujednolicenie nazewnictwa i organizacji pakietów zgodnie z
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Poprawki błędów
- Ta biblioteka używa teraz adnotacji o wartościach null z JSpecify, które są używane w typach. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict(jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin). (Ie4340, b/326456246) - Sekwencja czyszczenia dokumentu
ViewModel.onCleared. (I586c7, b/363984116)
Wersja 2.9.0-alpha07
13 listopada 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha07 Wersja 2.9.0-alpha07 zawiera te zmiany.
Zgodność z Kotlin Multiplatform
- Cykl życia
ViewModel SavedStatejest teraz zgodny z KMP. Dzięki temu możesz używaćSavedStateHandlew kodzie wspólnym. (Ib6394, b/334076622)
Obsługa serializacji KotlinX
Dzięki obsłudze serializacji KotlinX dodanej w SavedState
1.3.0-alpha05wprowadziliśmysaved, delegata właściwości leniwej, aby ułatwić przechowywanie klas@SerializablewSavedStateHandlei automatyczne przywracanie tych klas po śmierci procesu i ponownym utworzeniu. Pamiętaj, żesaveddelegat jest leniwy i nie wywoła lambdyinitani nie zapisze niczego wSavedStateHandle, dopóki nie zostanie do niego uzyskany dostęp. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Zmiany w interfejsie API
- Dodaj
getMutableStateFlowdoSavedStateHandle, aby zwrócićMutableStateFlow. Ta nowa funkcja jest dostępna tylko w przypadku kluczy i nie można jej używać zgetLiveData. Jeśli spróbujesz użyć obu tych metod do uzyskania dostępu do tego samego stanu, zostanie zgłoszony wyjątek. (I04a4f, b/375408415)
Wersja 2.9.0-alpha06
30 października 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha06 Wersja 2.9.0-alpha06 zawiera te zmiany.
Zmiany w zachowaniu
- Stan
Lifecycle.DESTROYEDjest stanem końcowym, a każda próba przeniesienia z niego elementuLifecycledo innego stanu spowoduje teraz wystąpienie błęduIllegalStateException. (I116c4, b/370577987) SavedStateHandlenie zawiera już żadnychSavedStateProvider.saveState(), w których zwróconyBundlejest pusty. (I910b5, b/370577987)
Poprawki błędów
Lifecycle.eventFlowjest teraz prawidłowo uzupełniane, gdyLifecyclema wartośćDESTROYED(I293b2, b/374043130)
Wersja 2.9.0-alpha05
16 października 2024 r.
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 została wydana bez znaczących zmian. Wersja 2.9.0-alpha05 zawiera te zmiany.
Wersja 2.9.0-alpha04
2 października 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha04 Wersja 2.9.0-alpha04 zawiera te zmiany.
Kotlin Multiplatform
- Moduł
lifecycle-viewmodel-savedstatejest teraz skonfigurowany tak, aby był zgodny z KMP. Przygotowujemy się w ten sposób do udostępnienia w przyszłej wersji interfejsów API takich jakSavedStateHandlew wspólnym zestawie źródeł. (I503ed, I48764, b/334076622)
Wersja 2.9.0-alpha03
18 września 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha03 Wersja 2.9.0-alpha03 zawiera te zmiany.
Poprawki błędów
- Z Cyklu życia
2.8.6:NullSafeMutableLiveDatabłąd Lint ma ulepszoną obsługę inteligentnego rzutowania, co pozwala uniknąć fałszywych alarmów. (85fed6, b/181042665)
Aktualizacje zależności
- W Cyklu życia
2.8.6: środowisko wykonawcze Cyklu życia Compose zależy teraz od środowiska wykonawczego Compose1.7.1. - Środowisko wykonawcze cyklu życia zależy teraz od ProfileInstaller
1.4.0
Wersja 2.9.0-alpha02
4 września 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha02 Wersja 2.9.0-alpha02 zawiera te zmiany.
Poprawki błędów
- W sekcji Cykl życia
2.8.5zaktualizujandroidx.lifecycle.ReportFragmentreguły ProGuard, aby zezwalały na zaciemnianie . (ff898e1)
Wkład zewnętrzny
- Przenieś
androidx.compose.ui.platform.LocalLifecycleOwnerdo wspólnego zbioru źródeł (KMP). Dziękujemy Ivanowi Matkovowi z JetBrains za pomoc. (8cd5d03) - W Lifecycle
2.8.5: delegat rozszerzenia SavedStateHandle.saveable` obsługuje teraz wartości dopuszczające wartość null. Dziękujemy Romanowi Kalukiewiczowi za pomoc. (0d78ea6)
Wersja 2.9.0-alpha01
7 sierpnia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.9.0-alpha01 Wersja 2.9.0-alpha01 zawiera te zmiany.
Kotlin Multiplatform
lifecycle-testingjest teraz zgodny z KMP. (Iea41e)- Dodanie obsługi
linuxArm64platformy Kotlin Multiplatform (I139d3, b/338268719)
Nowe funkcje
- Dostępny jest nowy artefakt
androidx.lifecycle:lifecycle-viewmodel-testingKMP, który zawiera klasęViewModelScenariodo testowania elementów ViewModel w izolacji, z obsługąonCleared(wszystkie platformy) iSavedStateHandle(tylko Android). (337f68d, c9b3409, 9799a95c, b/264602919) - Tworzenie obiektu
ViewModelza pomocąViewModelProviderjest teraz bezpieczne dla wątków. Usunięto adnotacje@MainThread. (Ifd978, b/237006831)
Zmiany w interfejsie API
- Dodaj funkcję fabryczną
CreationExtras.Key(), aby uprościć tworzenie anonimowych obiektówCreationExtras.Key. (I970ee) CreationExtraszawiera teraz podobne do mapy przeciążenia operatorów, które umożliwiają idiomatyczne manipulowanie treściami w Kotlinie. Umożliwia korzystanie zin,+=i+zCreationExtras. (Ib4353)CreationExtrasobsługuje teraz metodyequals,hashCodeitoString. (Ib4353)NewInstanceFactoryjest teraz dostępny na platformach JVM Desktop i Android. (d3d0892)- Właściwość rozszerzenia wbudowanego, która bezpiecznie udostępnia bazową aplikację w Kotlinie w wersji 2.0 (I39df2)
Poprawki błędów
- Usunęliśmy ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszą (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z wtyczki Androida do obsługi Gradle, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (If6b4c, b/345472586)
Wersja 2.8
Wersja 2.8.7
30 października 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.7 Wersja 2.8.7 zawiera te zmiany.
Zmiany w interfejsie API
androidx.compose.ui.platform.LocalLifecycleOwnerjest teraz dostępna w zestawie wspólnych źródeł (KMP). (6a3f5b3)lifecycle-runtime-compose: usuniętodesktopartefaktów, a dodano-jvmStubsi-linuxx64Stubsartefakty. Żaden z tych celów nie jest przeznaczony do użycia. Są to tylko symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose. (6a3f5b3)
Wersja 2.8.6
18 września 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.6 Wersja 2.8.6 zawiera te zmiany.
Poprawki błędów
NullSafeMutableLiveDataBłąd lintera ma ulepszoną obsługę inteligentnego rzutowania, co pozwala uniknąć fałszywych alarmów. (85fed6, b/181042665)
Aktualizacje zależności
- Środowisko wykonawcze cyklu życia Compose zależy teraz od środowiska wykonawczego Compose
1.7.1.
Wersja 2.8.5
4 września 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.5 Wersja 2.8.5 zawiera te zmiany.
Poprawki błędów
- Zaktualizuj reguły
androidx.lifecycle.ReportFragmentProGuard, aby zezwalały na zaciemnianie . (ff898e1)
Wkład zewnętrzny
- Delegat rozszerzenia
SavedStateHandle.saveableobsługuje teraz wartości dopuszczające wartość null. Dziękujemy Romanowi Kalukiewiczowi za pomoc. (0d78ea6)
Wersja 2.8.4
24 lipca 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.4 Wersja 2.8.4 zawiera te zmiany.
Poprawki błędów
LiveData.asFlow()prawidłowo obsługuje teraz przypadki, w których zwrócony przepływ jest natychmiast kończony po otrzymaniu wartości już ustawionej wLiveData(np. podczas korzystania ztake(1)). (I9c566)Lifecycle*Effectjest teraz idempotentne (tzn. jeślionStopOrDisposezostało wywołane z powodu zatrzymania cyklu życia, nie zostanie wywołane po raz drugi po usunięciu, chyba że cykl życia wróci do stanuSTARTED). (I5f607, b/352364595)
Wersja 2.8.3
1 lipca 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.3 Wersja 2.8.3 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną biblioteki Lifecycle w wersji 2.8 z biblioteką Compose w wersji 1.6.0 i starszych podczas korzystania ze zmniejszania kodu. (aosp/3133056, b/346808608)
Wersja 2.8.2
12 czerwca 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.2 Wersja 2.8.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problemy z
CompositionLocal LocalLifecycleOwner not presentpodczas używania biblioteki Lifecycle w wersji 2.8.X z biblioteką Compose w wersji 1.6.X lub starszej. Teraz możesz używać biblioteki Lifecycle w wersji 2.8.2 z dowolną wersją biblioteki Compose bez konieczności stosowania obejść. (aosp/3105647, b/336842920) ViewModelProvidernie będzie już ulegać awarii w przypadku łączenia poprzednich wersji zależnościcompileOnlyLifecycle z wersjami 2.8+, co rozwiązuje problemy z bibliotekami takimi jak LeakCanary. (I80383, b/341792251)
Wersja 2.8.1
29 maja 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.1 Wersja 2.8.1 zawiera te zmiany.
Poprawki błędów
lifecycle-viewmodel-composema teraz tylko wspólną zależność odcompose-runtime, co usuwa wspólną zależność odcompose-ui. Artefakt Androida zachowuje uprawnieniecompose-uize względu na zgodność. (aosp/3079334, b/339562627)ViewModelsaveablez użyciem delegatów właściwości używa teraz nazwy klasy jako części automatycznie generowanego klucza, co pozwala uniknąć konfliktów, jeśli wiele klas używa tego samegoSavedStateHandle. (aosp/3063463)
Wersja 2.8.0
14 maja 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0 Wersja 2.8.0 zawiera te zmiany.
Ważne zmiany od wersji 2.7.0
LocalLifecycleOwnerzostał przeniesiony z Compose UI dolifecycle-runtime-compose, aby jego interfejsy API pomocnicze oparte na Compose można było używać poza Compose UI.- Artefakt
lifecycle-runtime-composezawiera teraz interfejsy APIdropUnlessResumedidropUnlessStarted, które umożliwiają pomijanie kliknięć lub innych zdarzeń występujących nawet po tym, jak wartośćLifecycleOwnerspadnie poniżej podanej wartościLifecycle.State. Możesz na przykład użyć tego parametru w przypadku Navigation Compose, aby uniknąć obsługi zdarzeń kliknięcia po rozpoczęciu przejścia na inny ekran:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ViewModel.viewModelScopejest teraz parametrem konstruktora, który można zastąpić. Umożliwia to wstrzykiwanie własnego dyspozytora iSupervisorJob()lub zastępowanie domyślnego dyspozytora za pomocąbackgroundScopedostępnego wrunTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }ViewModelzostał przepisany w języku Kotlin i teraz używaAutoClosablezamiastCloseable. Umożliwia teraz dodawanieAutoCloseableobiektów zkey, które pozwalają na ich pobieranie za pomocągetCloseable().Wywoływanie funkcji
LifecycleStartEffectiLifecycleResumeEffectbez klucza jest teraz błędem, zgodnie z tą samą konwencją co w przypadku interfejsuDisposableEffectAPI, który te interfejsy API odzwierciedlają.Wycofano
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)na rzeczLiveData.toPublisher(lifecycleOwner).Rozszerzenia
lifecycle-livedata-core-ktxw języku Kotlin zostały przeniesione do modułulifecycle-livedata-core.NullSafeMutableLiveDatazostał zmodyfikowany, aby uniknąć wielu fałszywych dopasowań.
Zgodność z Kotlin Multiplatform w zakresie cyklu życia
Podstawowe interfejsy API cyklu życia w Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event i LifecycleRegistry są teraz dostarczane w artefaktach zgodnych z Kotlin Multiplatform.
Artefakty, których to dotyczy:
lifecycle-commonprzenosi większość interfejsów API docommoni obsługuje jvm oraz iOS oprócz Androida.lifecycle-runtimeprzenosi większość interfejsów API docommoni obsługuje jvm oraz iOS oprócz Androida.lifecycle-runtime-ktxjest teraz pusta, ponieważ wszystkie interfejsy API zostały przeniesione dolifecycle-runtime.lifecycle-runtime-composeprzenosi wszystkie interfejsy API docommoni udostępnia artefakt Androida, który jest zgodny z obsługą wielu platform wandroidx.compose.
Zgodność ViewModel z Kotlin Multiplatform
Artefakt lifecycle-viewmodel i interfejsy API, takie jak ViewModel, ViewModelStore, ViewModelStoreOwner i ViewModelProvider, są teraz dostarczane w artefaktach zgodnych z Kotlin Multiplatform.
Aby uwzględnić tę zmianę, metody takie jak te na ViewModelProvider, które przyjmowały java.lang.Class<T>, mają teraz odpowiednik przyjmujący kotlin.reflect.KClass<T>.
Zgodność binarna w Androidzie została zachowana, ale w porównaniu z wspólnym interfejsem API występuje kilka istotnych zmian:
- Tworzenie instancji
ViewModelProviderodbywa się teraz za pomocą metodViewModelProvider.create(), a nie przez bezpośrednie wywoływanie jej konstruktora. - Wartości
ViewModelProvider.NewInstanceFactoryiViewModelProvider.AndroidViewModelFactorysą dostępne tylko na urządzeniach z Androidem.- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy
ViewModelProvider.Factoryi użycie metodycreate, która przyjmuje wartośćCreationExtras, lub użycie DSLviewModelFactoryw języku Kotlin.
- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy
- Użycie
ViewModelProviderbez niestandardowej fabryki na platformach innych niż JVM spowoduje wystąpienie błęduUnsupportedOperationException. Na platformach JVM zgodność jest zachowywana przez użycie konstruktora ViewModel bez argumentów, jeśli nie podano niestandardowej fabryki. viewModelScopezostanie zastąpiony przezEmptyCoroutineContextna platformach, na którychDispatchers.Mainjest niedostępny (np. Linux).
Artefakty, których to dotyczy:
lifecycle-viewmodelprzenosi większość interfejsów API docommoni obsługuje jvm oraz iOS oprócz Androida.lifecycle-viewmodel-ktxjest teraz pusta, ponieważ wszystkie interfejsy API zostały przeniesione dolifecycle-viewmodel.lifecycle-viewmodel-composeprzenosi wszystkie interfejsy API docommoni udostępnia artefakt Androida, który jest zgodny z obsługą wielu platform wandroidx.compose.
Zmiany w zachowaniu
- Funkcja
InitializerViewModelFactory(w tym funkcjaviewModelFactory) będzie teraz zgłaszać błądIllegalArgumentException, jeśli dodano jużinitializero tym samymclazz: KClass<VM : ViewModel>. (Ic3a36)
Znane problemy
lifecycle-*:2.8.0wymaga minimalnej wersji Compose 1.7.0-alpha05 (b/336842920).
Wersja 2.8.0-rc01
1 maja 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-rc01 Wersja 2.8.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że profil podstawowy dla klas
lifecycle-commonnie był prawidłowo pakowany. Są one teraz spakowane wlifecycle-runtimeAAR. (aosp/3038274, b/322382422) - Naprawiono niezamierzoną zmianę kolejności czyszczenia instancji
AutoCloseabledołączonych do ViewModelu – przywrócono poprzednią kolejność:addCloseable(String, AutoCloseable),addClosable(AutoCloseable),onCleared(). (aosp/3041632) - Ulepsz domyślne działanie tworzenia
viewModelScopew środowiskach natywnych i JVM Desktop. (aosp/3039221)
Wkład zewnętrzny
- Dziękujemy Victorowi Kroppowi za ulepszenie sprawdzania wątku głównego na JVM Desktop. (aosp/3037116)
Wersja 2.8.0-beta01
17 kwietnia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-beta01 Wersja 2.8.0-beta01 zawiera te zmiany.
Nowe funkcje
- Artefakt
lifecycle-runtime-composejest teraz zgodny z Kotlin Multiplatform, a jego kod został przeniesiony docommon. Zawiera on artefakt Androida, który jest zgodny z obsługą wielu platform w przypadkuandroidx.compose. (If7a71, I4f4a0, b/331769623)
Wersja 2.8.0-alpha04
3 kwietnia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha04 Wersja 2.8.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Artefakt
lifecycle-viewmodel-composejest teraz zgodny z Kotlin Multiplatform, a jego kod został przeniesiony docommon. Zawiera on artefakt Androida, który jest zgodny z obsługą wielu platform wandroidx.compose. Aby uwzględnić tę zmianę, funkcja ComposableviewModelakceptuje teraz typKClassoprócz typujava.lang.Class. (b/330323282)
Poprawki błędów
NullSafeMutableLiveDatazostał zmodyfikowany, aby uniknąć wielu fałszywych dopasowań. (I2d8c1, Iafb18, I03463, I7ecef)
Aktualizacja zależności
- Artefakt
lifecycle-viewmodel-composezależy teraz od Compose w wersji 1.6.0. - Cykl życia zależy teraz od instalatora profilu w wersji 1.3.1.
Wersja 2.8.0-alpha03
20 marca 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha03 Wersja 2.8.0-alpha03 zawiera te zmiany.
Nowe funkcje
ViewModel.viewModelScopejest teraz parametrem konstruktora, który można zastąpić. Umożliwia to wstrzykiwanie własnego dyspozytora iSupervisorJob()lub zastępowanie domyślnego dyspozytora za pomocąbackgroundScopedostępnego wrunTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Zgodność z Kotlin Multiplatform
Artefakt lifecycle-viewmodel i interfejsy API, takie jak ViewModel, ViewModelStore, ViewModelStoreOwner i ViewModelProvider, są teraz dostarczane w artefaktach zgodnych z Kotlin Multiplatform. (b/214568825)
Aby uwzględnić tę zmianę, metody takie jak te na ViewModelProvider, które przyjmowały java.lang.Class<T>, mają teraz odpowiednik przyjmujący kotlin.reflect.KClass<T>.
Zgodność binarna w Androidzie została zachowana, ale w porównaniu z wspólnym interfejsem API występuje kilka istotnych zmian:
- Tworzenie instancji
ViewModelProviderodbywa się teraz za pomocą metodViewModelProvider.create(), a nie przez bezpośrednie wywoływanie jej konstruktora. - Wartości
ViewModelProvider.NewInstanceFactoryiViewModelProvider.AndroidViewModelFactorysą dostępne tylko na urządzeniach z Androidem.- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy
ViewModelProvider.Factoryi użycie metodycreate, która przyjmuje wartośćCreationExtras, lub użycie DSLviewModelFactoryw języku Kotlin.
- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy
- Użycie
ViewModelProviderbez niestandardowej fabryki na platformach innych niż JVM spowoduje wystąpienie błęduUnsupportedOperationException. Na platformach JVM zgodność jest zachowywana przez użycie konstruktora ViewModel bez argumentów, jeśli nie podano niestandardowej fabryki. viewModelScopezostanie zastąpiony przezEmptyCoroutineContextna platformach, na którychDispatchers.Mainjest niedostępny (np. Linux).
Zmiany w zachowaniu
- Funkcja
InitializerViewModelFactory(w tym funkcjaviewModelFactory) będzie teraz zgłaszać błądIllegalArgumentException, jeśli dodano jużinitializero tym samymclazz: KClass<VM : ViewModel>. (Ic3a36)
Poprawki błędów
ViewModel.getCloseableobsługuje teraz zduplikowane klucze: jeślikeyma już powiązany zasóbAutoCloseable, stary zasób zostanie zastąpiony i natychmiast zamknięty. (Ibeb67)- Dostęp do
viewModelScopewViewModeljest teraz bezpieczny dla wątków. (If4766, b/322407038)
Wkład zewnętrzny
LocalLifecycleOwnerzostał przeniesiony z Compose UI do lifecycle-runtime-compose, aby jego interfejsy API pomocnicze oparte na Compose można było używać poza Compose UI. Dziękujemy Jake’owi Whartonowi za pomoc. (I6c41b, b/328263448)
Wersja 2.8.0-alpha02
21 lutego 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha02 Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy interfejsy API
dropUnlessResumedidropUnlessStarted, które umożliwiają pomijanie kliknięć lub innych zdarzeń występujących nawet wtedy, gdy wartośćLifecycleOwnerspadnie poniżej podanej wartościLifecycle.State. Można jej na przykład używać w przypadku Navigation Compose, aby uniknąć obsługi zdarzeń kliknięcia po rozpoczęciu przejścia do innego ekranu:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Konwersje w Kotlinie
ViewModeljest teraz napisany w Kotlinie (I16f26, b/214568825)lifecycle-viewmodel-ktxrozszerzenia Kotlin zostały przeniesione do podstawowego modułu cyklu życia. (Id787b, b/274800183)lifecycle-runtime-ktxrozszerzenia Kotlin zostały przeniesione do podstawowego modułu cyklu życia. (Ic3686, b/274800183)lifecycle-livedata-core-ktxrozszerzenia Kotlin zostały przeniesione do podstawowego modułu cyklu życia. (I54a3d, b/274800183)
Zgodność z Kotlin Multiplatform
- Podstawowe interfejsy API cyklu życia w
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventiLifecycleRegistrysą teraz dostarczane w artefaktach zgodnych z Kotlin Multiplatform. (b/317249252)
Zmiany w interfejsie API
- Wywoływanie funkcji
LifecycleStartEffectiLifecycleResumeEffectbez klucza jest teraz błędem, zgodnie z tą samą konwencją co w przypadku interfejsuDisposableEffectAPI, który te interfejsy API odzwierciedlają. (Ib0e0c, b/323518079) ViewModelkorzysta teraz zAutoCloseablezamiast zCloseable. Jest to zmiana zgodna wstecznie. (I27f8e, b/214568825)- Wycofano
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)na rzeczLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
Wkład zewnętrzny
- Dziękujemy Ivanowi Matkovowi z Jetbrains za pomoc w przeniesieniu komponentu Lifecycle na Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Wersja 2.8.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha01 Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
ViewModelobsługuje teraz dodawanie obiektówCloseablezkey, które umożliwiają pobieranie ich za pomocągetCloseable(). (I3cf63)
Wersja 2.7
Wersja 2.7.0
10 stycznia 2024 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0 Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.6.0
TestLifecycleOwnerzawiera teraz funkcję zawieszaniasetCurrentState(), która zapewnia, że przed zwróceniem wartości zostaną ukończone zmiana stanu i wszystkie wywołania zwrotneLifecycleObserver. W przeciwieństwie do bezpośredniego ustawiania właściwościcurrentStatenie używa onarunBlocking, dzięki czemu można jej bezpiecznie używać w korutynie, np. w korutynie dostarczanej przezrunTest.- Rozszerzenia
LiveDatafunkcjimapiswitchMapdziałają teraz tak samo jak rozszerzeniedistinctUntilChanged– jeśli rozszerzenieLiveDatama ustawioną wartośćvalue, funkcjamap/switchMapzostanie natychmiast wywołana, aby wypełnić wartośćvaluezwróconego rozszerzeniaLiveData. Dzięki temu wartość początkowa zostanie ustawiona w ramach pierwszej kompozycji (gdy jest używana z funkcjąobserveAsState()), ale nie zmieni to sposobu działania obserwacji – aktualizacje wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacjiLiveData. - W tej wersji rozwiązaliśmy problem, który powodował, że po śmierci procesu i ponownym utworzeniu
SavedStateHandlenie przywracał prawidłowo niestandardowych klasParcelable. Ze względu na informacje o typach, które są tracone przez platformę Android, tablice niestandardowych obiektów Parcelable wymagają dodatkowej pracy (ręcznego tworzenia tablicy typów odpowiedniego typu), a dokumentacja dotycząca adnotacjiget,getLiveDataigetStateFlowwyraźnie wskazuje to ograniczenie. - Reguły proguard keep powiązane z
LifecycleObserverzostały usunięte. Oznacza to, że kod chroniony za pomocą narzędzia ProGuard, który chce używać interfejsów API za pomocą odbicia (np. za pomocą adnotacji@OnLifecycleEvent, która jest już od dawna przestarzała), będzie musiał podać własne reguły zachowywania w swoim konkretnym przypadku użycia.
Dostrzegalność zdarzeń cyklu życia
- Zamiast
LifecycleEventObservermożesz teraz obserwowaćFlowLifecycle.Eventza pomocą metody rozszerzeniaLifecycle.asFlow(). - Użytkownicy Jetpack Compose mogą teraz używać funkcji
LifecycleEventEffectdo uruchamiania efektów ubocznych Compose na podstawie funkcjiLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Użytkownicy Jetpack Compose mogą używać funkcji
LifecycleStartEffectiLifecycleResumeEffectdo obsługi par zdarzeń – od rozpoczęcia do zatrzymania i od wznowienia do wstrzymania. Ten interfejs API jest podobny do tego, który znajduje się wDisposableEffect, i jest odpowiedni w przypadkach, gdy zmiana wprowadzana w momencie zwiększania stanu musi zostać cofnięta, gdy stan się zmniejsza.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Więcej informacji znajdziesz w artykule Uruchamianie kodu w przypadku zdarzeń cyklu życia.
Obserwowanie stanu cyklu życia
- Bieżącą wartość
Lifecycle.Statemożna teraz obserwować za pomocą właściwościLifecycle.currentStateFlow, która zwraca wartośćStateFlow, gdzievalueto bieżąca wartośćLifecycle.State. - Użytkownicy Jetpack Compose mogą używać rozszerzenia
Lifecycle.currentStateAsState(), aby bezpośrednio udostępniaćLifecycle.StatejakoStatew Compose. Jest to odpowiednik (i krótsza alternatywa) funkcjilifecycle.currentStateFlow.collectAsState().
Więcej informacji znajdziesz w artykule Zbieranie informacji o stanie cyklu życia za pomocą przepływów.
Wersja 2.7.0-rc02
13 grudnia 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0-rc02 Wersja 2.7.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że po śmierci procesu i ponownym utworzeniu
SavedStateHandleniestandardowe klasyParcelablenie były prawidłowo przywracane. Ze względu na informacje o typach, które są tracone przez platformę Android, tablice niestandardowych obiektów Parcelable wymagają dodatkowej pracy (ręcznego tworzenia tablicy typów odpowiedniego typu), a dokumentacja dotycząca adnotacjiget,getLiveDataigetStateFlowwyraźnie wskazuje to ograniczenie. (I0b55a)
Wersja 2.7.0-rc01
15 listopada 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0-rc01 Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
LifecycleStartEffectiLifecycleResumeEffectteraz prawidłowo usuwają i ponownie tworzą blok efektu, jeśli zmieni sięLifecycleOwner. (Ia25c6)
Wersja 2.7.0-beta01
1 listopada 2023 roku
androidx.lifecycle:lifecycle-*:2.7.0-beta01 jest publikowany bez zmian. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
- Wersja beta, bez większych zmian w tej wersji do publikacji.
Wersja 2.7.0-alpha03
18 października 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha03 Wersja 2.7.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
lifecycle-runtime-testingzawiera teraz nowe sprawdzenie lintera, które zapobiega ustawianiuLifecycle.StateTestLifecycleOwnerza pomocą polacurrentStatew obrębie współprogramu. Sprawdzanie Lint sugeruje teraz zawieszeniesetCurrentState, które umożliwia ustawienieLifecycle.Statebez blokowania. (Icf728, b/297880630)
Poprawki błędów
- Rozwiązaliśmy problem z funkcją
LiveData.switchMap, który polegał na tym, że zwracanie tej samej instancjiLiveDatazarówno w pierwszym, jak i w kolejnym wywołaniu uniemożliwiało dodanie instancjiLiveDatajako źródła. (Ibedcba7)
Wersja 2.7.0-alpha02
6 września 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha02 Wersja 2.7.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
TestLifecycleOwnerzawiera teraz funkcję zawieszaniasetCurrentState(), która umożliwia użytkownikom korzystanie zTestLifecycleOwnerw ramach współprogramu, np. tego udostępnianego przezrunTest. (I329de, b/259344129)
Zmiany w interfejsie API
- Wszystkie pliki z modułów
lifecycle-livedata-ktxzostały przeniesione do głównego modułulifecycle-livedata. (I10c6f, b/274800183)
Zmiany w zachowaniu
- Rozszerzenia
LiveData.map()iLiveData.switchMap()ustawiają terazvaluezwracanegoLiveData, jeśli poprzedniLiveDatamiał ustawioną wartość, co zapewnia, że używanie wynikowego obiektu LiveData w Jetpack Compose ma odpowiedni stan podczas początkowej kompozycji. (I91d2b, b/269479952) ViewModeladdCloseable()natychmiast zamykaCloseable, jeśliViewModelotrzymał już połączenie doonCleared(). (I4712e, b/280294730)
Poprawki błędów
- W sekcji Lifecycle
2.6.2: rozwiązaliśmy problem polegający na tym, żeSavedStateHandlenie był prawidłowo przywracany po śmierci procesu, jeśli stan został przywrócony, wywołanosave()bez zapisywania stanu w nadrzędnymSavedStateRegistry, a następnie stan został ponownie przywrócony. Rozwiązuje to problem z interakcją międzyrememberSaveableaNavHostw Navigation Compose. (aosp/2729289)
Wersja 2.7.0-alpha01
26 lipca 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha01 Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Lifecycle.Statemożna teraz obserwować w Compose za pomocąLifecycle.currentStateFlow, która zwracaStateFlow, gdzievalueto bieżąca wartośćLifecycle.State. (Ib212d, b/209684871)Lifecycle.Events można teraz obserwować jakoFlowzLifecycle.asFlow().(If2c0f, b/176311030).LifecycleResumeEffectDodaliśmy interfejs API, który umożliwia uruchamianie funkcji ComposeSideEffectna podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_RESUMEiLifecycle.Event.ON_PAUSE. (I60386, b/235529345)LifecycleStartEffectDodano interfejs API do uruchamiania komponentówSideEffectna podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_STARTiLifecycle.Event.ON_STOP. (I5a8d1, b/235529345)LifecycleEventEffectDodano interfejs API do uruchamianiaSideEffects Compose na podstawieLifecycle.Event. (Ic9794, b/235529345)- Dodano rozszerzenie
Lifecycle.collectAsState(), aby bezpośrednio udostępniaćLifecycle.StatejakoStatew Compose. Jest to odpowiednik (i krótsza alternatywa) funkcjilifecycle.currentStateFlow.collectAsState(). (I11015, b/235529345)
Poprawki błędów
- Rozszerzenie
LiveData.distinctUntilChanged()ustawia teraz wartośćvaluezwróconego elementuLiveData, jeśli poprzedni elementLiveDatamiał ustawioną wartość. Nie zmienia to sposobu działania obserwacji – zaktualizowane wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacjiLiveDatazwróconego przezdistinctUntilChanged(). (Ib482f) - Reguły proguard keep powiązane z
LifecycleObserverzostały usunięte. Oznacza to, że kod chroniony, który chce używać interfejsów API za pomocą odbicia, będzie musiał podać własne reguły zachowania w odniesieniu do konkretnego przypadku użycia. (Ia12fd)
Wersja 2.6
Wersja 2.6.2
6 września 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.2 Wersja 2.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że po śmierci procesu nie można było prawidłowo przywrócić wartości
SavedStateHandle, jeśli stan został przywrócony, wywołano funkcjęsave()bez zapisywania stanu w elemencie nadrzędnymSavedStateRegistry, a następnie stan został ponownie przywrócony. Rozwiązuje to problem z interakcją międzyrememberSaveableaNavHostw Navigation Compose. (aosp/2729289)
Wersja 2.6.1
22 marca 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.1 Wersja 2.6.1 zawiera te zatwierdzenia.
Aktualizacje zależności
lifecycle-viewmodel-savedstatezależy teraz od SavedState1.2.1. (cd7251)- Cykl życia zależy teraz od ProfileInstaller
1.3.0. (f9d30b)
Wersja 2.6.0
8 marca 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0 Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.5.0
LiveDatazawiera teraz nową właściwośćisInitialized, która wskazuje, czy kiedykolwiek ustawiono jawną wartość wLiveData. Dzięki temu możesz odróżnić sytuację, w którejliveData.valuezwraca wartośćnull, ponieważ nigdy nie ustawiono żadnej wartości, od sytuacji, w której zwraca jawną wartośćnull.MediatorLiveDatazawiera teraz konstruktor do ustawiania wartości początkowej.- Dodano nowe rozszerzenie w
StateFlowiFlowwcollectAsStateWithLifecycle(), które zbiera dane z przepływów i przedstawia ich najnowszą wartość jako stan Compose w sposób uwzględniający cykl życia. - Metody
Lifecycle.launchWhenXiLifecycle.whenXzostały wycofane, ponieważ użycie wstrzymującego dyspozytora może w niektórych przypadkach prowadzić do marnowania zasobów. Zalecamy użycieLifecycle.repeatOnLifecycle. Więcej informacji o jednorazowym wstrzymywaniu pracy znajdziesz w tym wyjaśnieniu, które pokazuje, dlaczego jest to z natury niebezpieczne. - Konwersja na język Kotlin – duża liczba klas cyklu życia została przekonwertowana na język Kotlin. Wszystkie przekonwertowane klasy zachowują kompatybilność binarną z poprzednimi wersjami. W przypadku klas napisanych w języku Kotlin w tych klasach występują zmiany niezgodne ze źródłem:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
W tabeli poniżej znajdziesz źródłowe konwersje w nowej wersji cyklu życia.
| Cykl życia 2.5 | Cykl życia 2.5 (KTX) | Cykl życia 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Dopuszczalność wartości null metody
onChangedobiektuObserverutworzonego w języku Kotlin jest teraz zgodna z dopuszczalnością wartości null typu ogólnego. Jeśli chcesz, aby funkcjaObserver.onChanged()akceptowała typ dopuszczający wartość null, musisz utworzyć instancję funkcjiObserverz typem dopuszczającym wartość null. - Te klasy zostały również przekonwertowane na język Kotlin, ale zachowują zgodność ze źródłem:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcheriProcessLifecycleOwner.
Wersja 2.6.0-rc01
22 lutego 2023 roku
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-rc01 Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozszerzenie
LiveData.distinctUntilChanged()ustawia teraz wartośćvaluezwróconego elementuLiveData, jeśli poprzedni elementLiveDatamiał ustawioną wartość. Nie zmienia to sposobu działania obserwacji – zaktualizowane wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacjiLiveDatazwróconego przezdistinctUntilChanged(). (Ib482f)
Wersja 2.6.0-beta01
8 lutego 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-beta01 Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Konwersje w Kotlinie
LifecycleOwnerjest teraz napisany w języku Kotlin. Jest to zmiana powodująca niezgodność ze źródłem w przypadku klas napisanych w języku Kotlin – muszą one teraz zastępować właściwośćlifecyclezamiast implementować poprzednią funkcjęgetLifecycle(). (I75b4b, b/240298691)ViewModelStoreOwnerjest teraz w języku Kotlin. Jest to zmiana powodująca niezgodność ze źródłem w przypadku klas napisanych w języku Kotlin – muszą one teraz zastępować właściwośćviewModelStorezamiast implementować poprzednią funkcjęgetViewModelStore(). (I86409, b/240298691)- Rozszerzenie Kotlin w
LifecycleOwner, które udostępnia polelifecycleScope, zostało przeniesione zlifecycle-runtime-ktxdo artefaktulifecycle-common. (I41d78, b/240298691) - Rozszerzenie Kotlin w
Lifecycle, które udostępnia polecoroutineScope, zostało przeniesione zlifecycle-runtime-ktxdo artefaktulifecycle-common. (Iabb91, b/240298691)
Wersja 2.6.0-alpha05
25 stycznia 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha05 Wersja 2.6.0-alpha05 zawiera te zatwierdzenia.
Konwersje w Kotlinie
Transformationsjest teraz napisany w języku Kotlin. Jest to zmiana powodująca niezgodność kodu źródłowego w przypadku klas napisanych w języku Kotlin, które bezpośrednio używały składni takiej jakTransformations.map– kod Kotlin musi teraz używać składni metody rozszerzenia Kotlin, która była wcześniej dostępna tylko w przypadku używanialifecycle-livedata-ktx. W przypadku języka programowania Java wersje tych metod, które przyjmują parametrandroidx.arch.core.util.Function, są wycofywane i zastępowane wersjami, które przyjmują parametrFunction1w języku Kotlin. Ta zmiana zachowuje zgodność binarną. (I8e14f)ViewTreeViewModelStoreOwnerjest teraz napisany w języku Kotlin. Jest to zmiana powodująca niezgodność na poziomie kodu źródłowego w przypadku klas napisanych w języku Kotlin. Aby ustawić i znaleźć wcześniej ustawionego właściciela, musisz teraz bezpośrednio zaimportować i użyć metod rozszerzających Kotlin w przypadkuViewwandroidx.lifecycle.setViewTreeViewModelStoreOwneriandroidx.lifecycle.findViewTreeViewModelStoreOwner. Jest on zgodny binarnie i pozostaje zgodny ze źródłem w przypadku implementacji napisanych w języku programowania Java. (Ia06d8, Ib22d8, b/240298691)- Interfejs
HasDefaultViewModelProviderFactoryjest teraz napisany w języku Kotlin. Jest to zmiana powodująca niezgodność ze źródłem w przypadku klas napisanych w Kotlinie – muszą one teraz zastępować właściwościdefaultViewModelProviderFactoryidefaultViewModelCreationExtraszamiast implementować poprzednie odpowiednie funkcje. (Iaed9c, b/240298691) Observerjest teraz napisany w języku Kotlin. MetodaonChanged()używa teraz nazwyvaluedla swojego parametru. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcheriProcessLifecycleOwnersą teraz napisane w języku Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691).
Wersja 2.6.0-alpha04
11 stycznia 2023 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha04 Wersja 2.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
LiveDatazawiera teraz nową właściwośćisInitialized, która wskazuje, czy kiedykolwiek ustawiono jawną wartość wLiveData. Dzięki temu możesz odróżnić sytuację, w którejliveData.valuezwraca wartośćnull, ponieważ nigdy nie ustawiono żadnej wartości, od sytuacji, w której zwraca jawną wartośćnull. (Ibd018)
Zmiany w interfejsie API
- Interfejsy API
collectAsStateWithLifecycle()usługilifecycle-runtime-composenie są już w stanie eksperymentalnym. (I09d42, b/258835424) - Metody
Lifecycle.launchWhenXiLifecycle.whenXzostały wycofane, ponieważ użycie wstrzymującego dyspozytora może w niektórych przypadkach prowadzić do marnowania zasobów. Zalecamy użycieLifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
Konwersje w Kotlinie
ViewTreeLifecycleOwnerjest teraz napisany w języku Kotlin. W przypadku klas napisanych w języku Kotlin jest to zmiana powodująca niezgodność na poziomie kodu źródłowego – musisz teraz bezpośrednio importować i używać metod rozszerzeń Kotlin w przypadkuViewwandroidx.lifecycle.setViewTreeLifecycleOwneriandroidx.lifecycle.findViewTreeLifecycleOwner, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje on poprzednie rozszerzenie Kotlin wlifecycle-runtime-ktx. Jest on zgodny binarnie i pozostaje zgodny ze źródłem w przypadku implementacji napisanych w języku programowania Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreamsjest teraz napisany w języku Kotlin. Rozszerzenia Kotlin, które wcześniej znajdowały się wlifecycle-reactivestreams-ktx, zostały przeniesione do modułulifecycle-reactivestreamsi stały się głównym interfejsem kodu napisanego w języku Kotlin. Jest to zmiana powodująca niezgodność kodu źródłowego w przypadku kodu napisanego w języku Kotlin, jeśli nie używasz jeszcze interfejsów API metod rozszerzających Kotlin. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserveriViewModelStoresą teraz napisane w języku Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Poprawki błędów
SavedStateHandlenie ulega już awarii z błędemClassCastExceptionpodczas wywoływania funkcjiget()z nieprawidłowym typem klasy. (I6ae7c)
Wersja 2.6.0-alpha03
24 października 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha03 Wersja 2.6.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że ograniczenia między różnymi modułami cyklu życia nie działały zgodnie z oczekiwaniami. (I18d0d, b/249686765)
- Błędy zgłaszane przez
LifecycleRegistry.moveToState()zawierają teraz bardziej przydatne komunikaty o błędach, które informują programistów o komponencie powodującym błąd. (Idf4b2, b/244910446)
Wersja 2.6.0-alpha02
7 września 2022 roku
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha02 Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
MediatorLiveDatazawiera teraz konstruktor do ustawiania wartości początkowej. (Ib6cc5, b/151244085)
Poprawki błędów
LifecycleArtefakty zawierają teraz ograniczenia, które zapewniają, że wszystkie wzajemnie zależne artefakty cyklu życia używają tej samej wersji, automatycznie uaktualniając inne zależności, gdy jedna z nich zostanie uaktualniona. b/242871265FlowLiveData.asFlow()tworzy terazcallbackFlowzamiast korzystać z własnej implementacjiChannel, aby zapewnić bezpieczeństwo wątków i zachowanie kontekstu. (I4a8b2, b/200596935)- Funkcja
FlowLiveDataasLiveDatabędzie teraz zachowywać początkową wartośćStateFlowpodczas tworzenia nowego obiektuLiveData. (I3f530, b/157380488) - Z Cyklu życia
2.5.1: niestandardowe implementacjeAndroidViewModelFactoryprawidłowo wywołują teraz funkcjęcreate(modelClass)podczas korzystania z konstruktora stanowego zLifecyclew wersji 2.4 lub nowszej (I5b315, b/238011621)
Wersja 2.6.0-alpha01
29 czerwca 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha01 Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowe rozszerzenie w przypadku
StateFlowiFlowwcollectAsStateWithLifecycle, które zbiera dane z przepływów i reprezentuje najnowszą wartość jako stan kompozycji w sposób uwzględniający cykl życia. Przepływ jest zbierany, a nowa emisja jest ustawiana na wartość stanu, gdy cykl życia osiągnie co najmniej określony poziomLifecycle.State. Gdy cykl życia spadnie poniżej tej wartościLifecycle.State, zbieranie danych o procesie zostanie zatrzymane, a wartość stanu nie zostanie zaktualizowana. (I1856e, b/230557927)
Wersja 2.5
Wersja 2.5.1
27 lipca 2022 roku
Publikacja androidx.lifecycle:lifecycle-*:2.5.1 Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Implementacje niestandardowe
AndroidViewModelFactoryprawidłowo wywołują teraz funkcjęcreate(modelClass), gdy używają konstruktoraAndroidViewModelFactoryz zachowywaniem stanu zLifecyclew wersji 2.4 lub nowszej. (I5b315, b/238011621)
Wersja 2.5.0
29 czerwca 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0 Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
SavedStateHandleudostępnia teraz interfejsgetStateFlow()API, który zwraca KotlinStateFlowdo monitorowania zmian wartości jako alternatywę dla używaniaLiveData.ViewModel CreationExtras – podczas pisania niestandardowego
ViewModelProvider.Factorynie trzeba już rozszerzaćAndroidViewModelFactoryaniAbstractSavedStateViewModelFactory, aby uzyskać dostęp odpowiednio doApplicationlubSavedStateHandle. Zamiast tego te pola są udostępniane każdej podklasieViewModelProvider.FactoryjakoCreationExtrasza pomocą nowego przeciążeniacreate:create(Class<T>, CreationExtras). Te dodatkowe informacje są dostarczane automatycznie przez aktywność lub fragment podczas korzystania odpowiednio z Activity1.5.0i Fragment1.5.0.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }lifecycle-viewmodeludostępnia terazviewModelFactoryKotlin DSL, który umożliwia definiowanieViewModelProvider.Factoryza pomocą co najmniej 1 inicjatora lambda, po jednym dla każdej klasyViewModelobsługiwanej przez fabrykę niestandardową, przy użyciuCreationExtrasjako głównego źródła danych.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }lifecycle-viewmodel-composeudostępnia teraz interfejs APIviewModel(), który przyjmuje fabrykę lambda do tworzenia instancjiViewModelbez konieczności tworzenia niestandardowegoViewModelProvider.Factory.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }Integracja komponentu SavedStateHandle z komponentem Saver Compose – artefakt
lifecycle-viewmodel-composezawiera teraz nowe eksperymentalne interfejsy API wSavedStateHandle.saveable, które umożliwiają zachowanie podobne dorememberSaveable, oparte naSavedStateHandlekomponentu `ViewModel`.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }Dodano interfejs
addCloseable()API i nowe przeciążenie konstruktora, które umożliwiają dodawanie do obiektuViewModelco najmniej 1 obiektuCloseable. Obiekty te zostaną zamknięte po wyczyszczeniu obiektuViewModelbez konieczności ręcznego wykonywania jakichkolwiek działań w obiekcieonCleared().Aby na przykład utworzyć zakres coroutine, który możesz wstrzyknąć do ViewModelu, ale kontrolować za pomocą testowania, możesz utworzyć
CoroutineScope, który implementujeCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }Możesz go następnie użyć w konstruktorze
ViewModel, zachowując ten sam okres istnienia coviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Zmiany w zachowaniu
- Próba przeniesienia
Lifecycle.StatezINITIALIZEDdoDESTROYEDzawsze będzie teraz zgłaszać błądIllegalStateException, niezależnie od tego, czyLifecyclema dołączonego obserwatora. LifecycleRegistrybędzie teraz usuwać obserwatorów, gdy osiągnie stanDESTROYED.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-rc02 Wersja 2.5.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
ViewModelProvidernie będzie już ulegać awarii podczas łączenia poprzednich wersji zależności Lifecycle compileOnly z wersjami 2.5 lub nowszymi. (I81a66, b/230454566)
Wersja 2.5.0-rc01
11 maja 2022 roku
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-rc01 Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
MediatorLiveData.addSource()zgłasza terazNullPointerException, gdy otrzymanull, zamiast przekazywaćnulldo obserwatorów.(Ibd0fb, b/123085232)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-beta01 Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano delegaty właściwości
SavedStateHandle.saveable, aby używać nazw właściwości jako kluczy do utrwalania stanu wSavedStateHandle(I8bb86, b/225014345)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że zagnieżdżenie jednego elementu
NavHostw innym elemencieNavHostna karcie nawigacji u dołu, która nie jest podstawowa, prowadziło do wyświetlenia elementuIllegalStateExceptionw przypadku używania wielu stosów wstecznych. (I11bd5, b/228865698)
Wersja 2.5.0-alpha06
6 kwietnia 2022 roku
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha06 Wersja 2.5.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano eksperymentalne przeciążenie
MutableStatedoSavedStateHandle.saveable, aby zapewnić zgodność zrememberSaveable(I38cfe, b/224565154)
Zmiany w interfejsie API
- Klasa
CreationExtrasjest teraz abstrakcyjna zamiast zamknięta. (Ib8a7a)
Poprawki błędów
- Rozwiązaliśmy błąd
IllegalStateException: Already attached to lifecycleOwnerspowodowany przezSavedStateHandleController. (I7ea47, b/215406268)
Wersja 2.5.0-alpha05
23 marca 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha05 Wersja 2.5.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Moduł
lifecycle-viewmodel-composeudostępnia teraz eksperymentalny interfejs APISavedStateHandleSaver, który zapewnia prawidłową integrację wartości wSavedStateHandlez tym samym zapisanym stanem instancji, którego używarememberSaveable. (Ia88b7, b/195689777)
Zmiany w interfejsie API
- Rozwiązaliśmy problem ze zgodnością z cyklem życia w wersji 2.3 i nowszych wersjach cyklu życia w języku Java. (I52c8a, b/219545060)
Poprawki błędów
SavedStateViewFactoryobsługuje teraz używanieCreationExtrasnawet wtedy, gdy zostało zainicjowane za pomocąSavedStateRegistryOwner. Jeśli podano dodatkowe informacje, zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
Wersja 2.5.0-alpha04
9 marca 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha04 Wersja 2.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SavedStateHandleudostępnia teraz interfejsgetStateFlow()API, który zwraca KotlinStateFlowdo monitorowania zmian wartości jako alternatywę dla używaniaLiveData. (Iad3ab, b/178037961)
Wersja 2.5.0-alpha03
23 lutego 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha03 Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy interfejs
addCloseable()API i nowe przeciążenie konstruktora, które umożliwiają dodawanie do obiektuViewModelco najmniej 1 obiektuCloseable, który zostanie zamknięty po wyczyszczeniu obiektuViewModelbez konieczności ręcznego wykonywania żadnych czynności w obiekcieonCleared(). (I55ea0) lifecycle-viewmodeludostępnia terazInitializerViewModelFactory, który umożliwia dodawanie funkcji lambda do obsługi określonych klasViewModelprzy użyciuCreationExtrasjako głównego źródła danych. (If58fc, b/216687549)lifecycle-viewmodel-composeudostępnia teraz interfejsviewModel()API, który przyjmuje fabrykę funkcji lambda do tworzenia instancjiViewModelbez konieczności tworzenia niestandardowegoViewModelProvider.Factory. (I97fbb, b/216688927)
Zmiany w interfejsie API
- Możesz teraz utworzyć
ViewModelz użyciemCreationExtrasza pomocąlifecycle-viewmodel-compose. (I08887, b/216688927)
Zmiany w zachowaniu
- Próba przeniesienia
Lifecycle.StatezINITIALIZEDdoDESTROYEDzawsze będzie teraz powodować błądIllegalStateException, niezależnie od tego, czyLifecyclema dołączony obserwator. (I7c390, b/177924329) LifecycleRegistrybędzie teraz usuwać obserwatorów, gdy osiągnie stanDESTROYED. (I4f8dd, b/142925860)
Wersja 2.5.0-alpha02
9 lutego 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha02 Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Pliki
SavedStateHandleiSavedStateViewModelFactoryzostały przekonwertowane na język Kotlin. Poprawiło to dopuszczalność wartości null w przypadku typów ogólnych w obu klasach. (Ib6ce2, b/216168263, I9647a, b/177667711) - Parametr funkcji
LiveDataswitchMapmoże teraz mieć wartość wyjściową dopuszczającą wartość null. (I40396, b/132923666) - Rozszerzenia
LiveData-ktx są teraz oznaczone adnotacją@CheckResult, aby wymusić użycie wyniku podczas wywoływania tych funkcji. (Ia0f05, b/207325134)
Zmiany w zachowaniu
SavedStateHandleprawidłowo przechowuje teraz wartość domyślną, gdy nie ma wartości dla określonego klucza. (I1c6ce, b/178510877)
Poprawki błędów
- W sekcji Cykl życia
2.4.1: zaktualizowanolifecycle-process, aby zależał od Startup 1.1.1. Dzięki temu poprawki zapobiegające zgłaszaniu przezProcessLifecycleInitializerbłęduStartupExceptionbędą dostępne domyślnie. (Ib01df, b/216490724) - Gdy niestandardowe klasy
AndroidViewModelmają parametry w niewłaściwej kolejności i próbują utworzyćViewModel, wyświetla się teraz ulepszony komunikat o błędzie. (I340f7, b/177667711) - Model widoku możesz teraz utworzyć za pomocą funkcji
CreationExtras, korzystając zAndroidViewModelFactorybez ustawiania aplikacji. (I6ebef, b/217271656)
Wersja 2.5.0-alpha01
26 stycznia 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha01 Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.
ViewModel CreationExtras
W tej wersji przygotowujemy grunt pod restrukturyzację sposobu tworzenia ViewModel. Zamiast sztywnego zestawu podklas ViewModelProvider.Factory, z których każda dodaje dodatkowe funkcje (umożliwiając parametr konstruktora Application za pomocą AndroidViewModelFactory, parametr konstruktora SavedStateHandle za pomocą SavedStateViewModelFactory i AbstractSavedStateViewModelFactory itp.), przechodzimy do świata fabryk bezstanowych, które opierają się na nowej koncepcji – CreationExtras. (Ia7343, b/188691010, b/188541057)
W związku z tą zmianą ViewModelProvider nie będzie już bezpośrednio wywoływać poprzedniej metody create(Class<T>) ViewModelProvider.Factory. Zamiast tego wywołuje nowe przeciążenie funkcji create: create(Class<T>, CreationExtras). Oznacza to, że każda bezpośrednia implementacja instancji ViewModelProvider.Factory ma teraz dostęp do każdego z tych nowych CreationExtras:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: tenStringzapewnia dostęp do klucza niestandardowego przekazanego doViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYzapewnia dostęp do zajęćApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYzapewnia dostęp doSavedStateRegistryOwner, który jest używany do tworzenia tego ViewModelu.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYzapewnia dostęp doViewModelStoreOwner, który jest używany do tworzenia tego ViewModelu.SavedStateHandleSupport.DEFAULT_ARGS_KEYzapewnia dostęp doBundleargumentów, które powinny być użyte do utworzeniaSavedStateHandle.
Te dodatkowe informacje są domyślnie dostępne w przypadku korzystania z aktywności 1.5.0-alpha01, fragmentu 1.5.0-alpha01 i nawigacji 2.5.0-alpha01. Jeśli używasz starszej wersji tych bibliotek, Twój CreationExtras będzie pusty – wszystkie istniejące podklasy ViewModelProvider.Factory zostały przepisane tak, aby obsługiwać zarówno starszą ścieżkę tworzenia używaną przez starsze wersje tych bibliotek, jak i ścieżkę CreationExtras, która będzie używana w przyszłości.
Te CreationExtras umożliwiają utworzenie ViewModelProvider.Factory, które przekazuje tylko potrzebne informacje do każdego ViewModel bez konieczności korzystania ze ścisłej hierarchii podklas Factory:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
Używamy funkcji rozszerzenia createSavedStateHandle() Kotlina w przypadku CreationExtras z SavedStateHandleSupport, aby utworzyć SavedStateHandle tylko dla jednego ViewModelu, który tego potrzebuje. (Ia6654, b/188541057)
Niestandardowe CreationExtras można udostępnić, zastępując getDefaultViewModelCreationExtras() w ComponentActivity lub Fragment, dzięki czemu będą one dostępne dla niestandardowego ViewModelProvider.Factory jako wbudowana forma wspomaganego wstrzykiwania. Te dodatki będą automatycznie udostępniane w niestandardowej fabryce, gdy są używane bezpośrednio z ViewModelProvider lub z rozszerzeniami właściwości Kotlin by viewModels() i by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że wartość domyślna podana w
SavedStateHandlepojawiała się ponownie po zakończeniu procesu i jego ponownym utworzeniu, nawet jeśli została specjalnie usunięta zSavedStateHandle. W związku z tymSavedStateHandlenie będzie już łączyć wartości domyślnych z przywróconymi, a jako źródło informacji będzie używać tylko tych drugich. (I53a4b)
Wersja 2.4
Wersja 2.4.1
9 lutego 2022 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.1 Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Przeniesiono z Lifecycle
2.5.0-alpha01: rozwiązaliśmy problem polegający na tym, że wartość domyślna podana wSavedStateHandlepojawiała się ponownie po zakończeniu procesu i jego ponownym utworzeniu, nawet jeśli została specjalnie usunięta zSavedStateHandle. W związku z tymSavedStateHandlenie będzie już łączyć wartości domyślnych z przywróconymi, a jako źródło informacji będzie używać tylko tych drugich. (I53a4b) lifecycle-processzależy teraz od Androidx Startup 1.1.1, w którym naprawiono regresję polegającą na tym, że użycieProcessLifecycleInitializerpowodowało błądStartupException. (b/216490724)
Wersja 2.4.0
27 października 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.0 Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
@OnLifecycleEventzostał wycofany. Zamiast tego użyj zasadyLifecycleEventObserverlubDefaultLifecycleObserver.- Dodano bibliotekę
androidx.lifecycle:lifecycle-viewmodel-compose. ZapewniaviewModel()iLocalViewModelStoreOwner.- Zmiana powodująca niezgodność z kodem źródłowym:
ViewModelProviderzostał przepisany w języku Kotlin. MetodaViewModelProvider.Factory.createnie zezwala już na typ ogólny dopuszczający wartość null.
- Zmiana powodująca niezgodność z kodem źródłowym:
- Do
androidx.lifecycle:lifecycle-runtime-ktxdodano nowe interfejsy API współprogramów: Lifecycle.repeatOnLifecycle, interfejs API, który wykonuje blok kodu w współprogramie, gdy stan cyklu życia jest co najmniej w określonym stanie. Blokada zostanie anulowana i ponownie uruchomiona, gdy cykl życia będzie wchodzić w stan docelowy i z niego wychodzić.Flow.flowWithLifecycle– interfejs API, który emituje wartości z obiektu Flow wyższego poziomu, gdy cykl życia jest w określonym stanie lub późniejszym.DefaultLifecycleObserverzostał przeniesiony zlifecycle.lifecycle-common-java8dolifecycle.lifecycle-common.lifecycle.lifecycle-common-java8nie zapewnia już żadnych dodatkowych funkcji pozalifecycle.lifecycle-common, więc zależność od niego można zastąpićlifecycle.lifecycle-common.- Interfejs API bez korutyn z
lifecycle-viewmodel-ktxzostał przeniesiony do modułulifecycle-viewmodel. lifecycle-processużywa terazandroidx.startupdo inicjowaniaProcessLifecycleOwner.Wcześniej zajmował się tym
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Jeśli w przeszłości do inicjowania cyklu życia procesu używano
tools:node="remove"ContentProvider, musisz wykonać te czynności:<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Wersja 2.4.0-rc01
29 września 2021 r.
androidx.lifecycle:lifecycle-*:2.4.0-rc01 została opublikowana bez zmian w porównaniu z wersją Lifecycle 2.4.0-beta01. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Wersja 2.4.0-beta01
15 września 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.0-beta01 Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
@OnLifecycleEventzostał wycofany. Zamiast tego użyj zasadyLifecycleEventObserverlubDefaultLifecycleObserver. (I5a8fa)- Interfejs DefaultLifecycleObserver został przeniesiony z
androidx.lifecycle.lifecycle-common-java8doandroidx.lifecycle.lifecycle-common.androidx.lifecycle.lifecycle-common-java8nie zapewnia już żadnych dodatkowych funkcji pozaandroidx.lifecycle.lifecycle-common, więc zależność od niego można zastąpićandroidx.lifecycle.lifecycle-common. (I021aa) - Interfejs API bez korutyn z
lifecycle-viewmodel-ktxzostał przeniesiony do modułulifecycle-viewmodel. (I6d5b2)
Wkład zewnętrzny
Wersja 2.4.0-alpha03
4 sierpnia 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha03 Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmiana powodująca niezgodność na poziomie kodu źródłowego: klasa ViewModelProvider została przepisana w języku Kotlin.
Metoda
ViewModelProvider.Factory.createnie zezwala już na typ ogólny dopuszczający wartość null. (I9b9f6)
Zmiany w zachowaniu
- Funkcja
Lifecycle.repeatOnLifecycle:blockjest teraz zawsze wywoływana szeregowo podczas powtarzania wykonania. (Ibab33)
Wkład zewnętrzny
- Dziękujemy chao2zhang za poprawienie fragmentów kodu w dokumentacji
repeatOnLifecycle. 205.
Wersja 2.4.0-alpha02
16 czerwca 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha02 Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowy
RepeatOnLifecycleWrongUsagetest lint dolifecycle-runtime-ktx, który wykrywa nieprawidłowe użycierepeateOnLifecyclewonStart()lubonResume(). (706078, b/187887400)
Zmiany w interfejsie API
- Interfejs
LifecycleOwner.addRepeatingJobAPI został usunięty na rzecz interfejsuLifecycle.repeatOnLifecycle, który uwzględnia współbieżność strukturalną i jest łatwiejszy w użyciu. (I4a3a8) - Ustaw
ProcessLifecycleInitializerjako publiczny, aby inneandroidx.startup.Initializermogły używać go jako zależności. (I94c31)
Poprawki błędów
- Rozwiązaliśmy problem z
NullSafeMutableLiveDatasprawdzaniem kodu, gdy pole zawiera modyfikatory. (#147, b/183696616) - Rozwiązaliśmy kolejny problem z kontrolą
NullSafeMutableLiveDatapodczas używania typów generycznych. (#161, b/184830263)
Wkład zewnętrzny
- Dziękujemy maxsav za ulepszenie sprawdzania kodu
NullSafeMutableLiveData. (#147, b/183696616) - Dziękujemy kozaxinan za ulepszenie sprawdzania kodu
NullSafeMutableLiveData. (#161, b/184830263)
Wersja 2.4.0-alpha01
24 marca 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha01 Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.
Zmiany w zachowaniu
lifecycle-processużywa terazandroidx.startupdo inicjowaniaProcessLifecycleOwner.Wcześniej zajmował się tym
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Jeśli w przeszłości do inicjowania cyklu życia procesu używano
tools:node="remove"ContentProvider, musisz wykonać te czynności:<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Zmiany w interfejsie API
- Dodano interfejs API
Flow.flowWithLifecycle, który emituje wartości z przepływu nadrzędnego, gdy cykl życia jest w określonym stanie, za pomocą interfejsu APILifecycle.repeatOnLifecycle. Jest to alternatywa dla nowego interfejsuLifecycleOwner.addRepeatinJobAPI. (I0f4cd)
Poprawki błędów
- Od Lifecycle 2.3.1: reguła lintera
NonNullableMutableLiveDatamoże teraz prawidłowo rozróżniać zmienne pól o różnej dopuszczalności wartości null. (b/169249668)
Lifecycle Viewmodel Compose w wersji 1.0.0
Wersja 1.0.0-alpha07
16 czerwca 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API powodujące niezgodność
viewModel()przyjmuje teraz opcjonalny parametrViewModelStoreOwner, co ułatwia współpracę z właścicielami innymi niżLocalViewModelStoreOwner. Możesz na przykład użyć adnotacjiviewModel(navBackStackEntry), aby pobrać ViewModel powiązany z określonym wykresem nawigacji. (I2628d, b/188693123)
Wersja 1.0.0-alpha06
2 czerwca 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Zaktualizowano, aby była zgodna z wersją 1.0.0-beta08 biblioteki Compose.
Wersja 1.0.0-alpha05
18 maja 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano, aby była zgodna z wersją
1.0.0-beta07biblioteki Compose.
Poprawki błędów
- Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).
Wersja 1.0.0-alpha04
7 kwietnia 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Zmiany zależności
- Ta wersja umożliwia synchronizowanie zależności
androidx.hilt:hilt-navigation-composeiandroidx.navigation:navigation-composew usługachandroidx.compose.compiler:compiler:1.0.0-beta04iandroidx.compose.runtime:runtime:1.0.0-beta04. W przypadku wersji 1.0.0 wymagane jest, aby kompilator i środowisko wykonawcze były zgodne.
Wersja 1.0.0-alpha03
10 marca 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LocalViewModelStoreOwner.currentzwraca teraz wartość dopuszczającą wartość nullViewModelStoreOwner, aby lepiej określać, czy w bieżącej kompozycji jest dostępny elementViewModelStoreOwner. Interfejsy API, które wymagająViewModelStoreOwner, takie jakviewModel()iNavHost, nadal zgłaszają wyjątek, jeśli nie ustawionoViewModelStoreOwner. (Idf39a)
Lifecycle-Viewmodel-Compose w wersji 1.0.0-alpha02
24 lutego 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LocalViewModelStoreOwnerma terazprovides, które można używać zCompositionLocalProviderzamiast interfejsuasProvidableCompositionLocal()API. (I45d24)
Lifecycle-Viewmodel-Compose w wersji 1.0.0-alpha01
10 lutego 2021 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Funkcje
viewModel()iLocalViewModelStoreOwnerzostały przeniesione zandroidx.compose.ui.viewinteropdo tego artefaktu w pakiecieandroidx.lifecycle.viewmodel.compose. (I7a374)
Wersja 2.3.1
Lifecycle w wersji 2.3.1
24 marca 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.1 Wersja 2.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Reguła lintowania
NonNullableMutableLiveDatamoże teraz prawidłowo rozróżniać zmienne pól o różnej dopuszczalności wartości null. (b/169249668)
Wersja 2.3.0
Wersja 2.3.0
10 lutego 2021 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0 Wersja 2.3.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 2.2.0
SavedStateHandleobsługa klas niepodlegających serializacji:SavedStateHandleobsługuje teraz serializację leniwą, umożliwiając wywołaniesetSavedStateProvider()dla danego klucza, co zapewniaSavedStateProvider, które wywoła zwrotne wywołaniesaveState(), gdySavedStateHandlezostanie poproszony o zapisanie swojego stanu. Więcej informacji znajdziesz w sekcji Zapisywanie klas, których nie można przekształcić w obiekt Parcelable.- Wymuszanie zachowania cyklu życia:
- LifecycleRegistry wymusza teraz stan końcowy
DESTROYED. LifecycleRegistrysprawdza teraz, czy jego metody są wywoływane w głównym wątku. Zawsze było to wymagane w przypadku cykli życia działań, fragmentów itp. Dodanie obserwatorów z wątków innych niż główny powodowało trudne do wykrycia awarie w czasie działania. W przypadku obiektówLifecycleRegistrynależących do Twoich komponentów możesz wyraźnie zrezygnować ze sprawdzania, używającLifecycleRegistry.createUnsafe(...), ale musisz wtedy zadbać o odpowiednią synchronizację, gdy do tego obiektuLifecycleRegistryuzyskuje się dostęp z różnych wątków.
- LifecycleRegistry wymusza teraz stan końcowy
- Pomocnicze funkcje stanu cyklu życia i zdarzeń: dodano statyczne metody pomocnicze
downFrom(State),downTo(State),upFrom(State),upTo(State)doLifecycle.Event, aby generowaćEventna podstawieStatei kierunku przejścia. Dodaliśmy metodęgetTargetState(), która udostępniaState, do którego cykl życia przejdzie bezpośrednio poEvent. withStateAtLeast: dodano interfejsy APILifecycle.withStateAtLeast, które oczekują na stan cyklu życia i synchronicznie uruchamiają blok kodu niepowodujący zawieszenia w momencie zmiany stanu, a następnie wznawiają działanie z wynikiem. Te interfejsy API różnią się od dotychczasowych metodwhen*, ponieważ nie pozwalają na uruchamianie kodu zawieszającego i nie korzystają z niestandardowego dyspozytora. (aosp/1326081)ViewTreeInterfejsy API: nowe interfejsy APIViewTreeLifecycleOwner.get(View)iViewTreeViewModelStoreOwner.get(View)umożliwiają pobieranie odpowiednio kontenerówLifecycleOwneriViewModelStoreOwnerna podstawie instancjiView. Aby prawidłowo wypełnić te pola, musisz przejść na Activity1.2.0i Fragment1.3.0oraz AppCompat w wersji 1.3.0-alpha01 lub nowszej. Rozszerzenia KotlinfindViewTreeLifecycleOwnerifindViewTreeViewModelStoreOwnersą dostępne odpowiednio wlifecycle-runtime-ktxilifecycle-viewmodel-ktx.LiveData.observe()Wycofanie rozszerzenia Kotlin: rozszerzenie KotlinLiveData.observe()niezbędne do używania składni lambda zostało wycofane, ponieważ nie jest potrzebne w przypadku Kotlina 1.4.
Wersja 2.3.0-rc01
16 grudnia 2020 roku
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-rc01 Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Metoda
keys()obiektuSavedStateHandlejest teraz spójna przed zapisaniem stanu i po jego zapisaniu – obejmuje teraz klucze używane wcześniej z funkcjąsetSavedStateProvider(), a także klucze używane z funkcjamiset()igetLiveData(). (aosp/1517919, b/174713653)
Wkład zewnętrzny
- Interfejsy API do zawieszania procedur współbieżnych uwzględniających cykl życia lepiej obsługują teraz wywołania funkcji
yield(). Dziękujemy Nicklasowi Ansmanowi Giertzowi! (aosp/1430830, b/168777346)
Wersja 2.3.0-beta01
1 października 2020 roku
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-beta01 Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LiveData.observe()Rozszerzenie Kotlina, które jest niezbędne do używania składni lambda, zostało wycofane, ponieważ nie jest potrzebne w przypadku Kotlina 1.4. (I40d3f)
Poprawki błędów
- Uaktualnienie androidx do Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Zmiany w dokumentacji
- Zaktualizowaliśmy
liveDatakreator iasLiveData()dokumenty, aby uwzględnić w nich szczegółowe informacje o zmianie podanych wartości limitu czasu. (aosp/1122324)
Wersja 2.3.0-alpha07
19 sierpnia 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha07 Wersja 2.3.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z awarią w
NullSafeMutableLiveDatasprawdzaniu Lint. (aosp/1395367)
Wersja 2.3.0-alpha06
22 lipca 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha06 Wersja 2.3.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy statyczne metody pomocnicze
downFrom(State),downTo(State),upFrom(State),upTo(State)doLifecycle.Event, aby generowaćEventna podstawieStatei kierunku przejścia. Dodaliśmy metodęgetTargetState(), która udostępniaState, do którego cykl życia przejdzie bezpośrednio poEvent. (I00887) - Dodano interfejsy API
Lifecycle.withStateAtLeast, które czekają na stan cyklu życia i synchronicznie wykonują blok kodu niezawieszającego w momencie zmiany stanu, a następnie wznawiają działanie z wynikiem. Te interfejsy API różnią się od dotychczasowych metodwhen*, ponieważ nie pozwalają na uruchamianie kodu zawieszającego i nie korzystają z niestandardowego dyspozytora. (aosp/1326081)
Zmiany w zachowaniu
- LifecycleRegistry wymusza teraz stan końcowy
DESTROYED. (I00887) LifecycleRegistrysprawdza teraz, czy jego metody są wywoływane w głównym wątku. Zawsze było to wymagane w przypadku cykli życia działań, fragmentów itp. Dodanie obserwatorów z wątków innych niż główny powodowało trudne do wykrycia awarie w czasie działania. W przypadku obiektówLifecycleRegistrynależących do Twoich komponentów możesz wyraźnie zrezygnować ze sprawdzania, używającLifecycleRegistry.createUnsafe(...), ale musisz wtedy zadbać o odpowiednią synchronizację, gdy do tego obiektuLifecycleRegistryuzyskuje się dostęp z różnych wątków (Ie7280, b/137392809).
Poprawki błędów
- Naprawiliśmy awarię w
NullSafeMutableLiveData. (b/159987480) - Naprawiono
ObsoleteLintCustomCheckw przypadku sprawdzania kodu za pomocą narzędzia Lint dołączonego dolifecycle-livedata-core-ktx(a w szczególnościNullSafeMutableLiveData). (b/158699265)
Wersja 2.3.0-alpha05
24 czerwca 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha05 Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
LiveDatalepiej obsługuje przypadki ponownego wejścia, unikając duplikatów wywołań funkcjionActive()lubonInactive(). (b/157840298)- Rozwiązaliśmy problem, który powodował, że podczas korzystania z Androida Studio 4.1 Canary 6 lub nowszego nie można było uruchomić lintowania. (aosp/1331903)
Wersja 2.3.0-alpha04
10 czerwca 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha04 Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z awarią podczas sprawdzania
NonNullableMutableLiveData. (b/157294666) NonNullableMutableLiveDataSprawdzanie kodu obejmuje teraz znacznie więcej przypadków, w którychnullwartość została ustawiona wMutableLiveDataz parametrem typu o wartości innej niż null. (b/156002218)
Wersja 2.3.0-alpha03
20 maja 2020 r.
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 są publikowane. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
SavedStateHandleobsługuje teraz leniwą serializację, umożliwiając wywołaniesetSavedStateProvider()dla danego klucza i udostępnienieSavedStateProvider, które otrzyma wywołanie zwrotne dosaveState(), gdySavedStateHandlezostanie poproszony o zapisanie swojego stanu. (b/155106862)- Nowy interfejs
ViewTreeViewModelStoreOwner.get(View)API umożliwia pobieranie konteneraViewModelStoreOwnerna podstawie instancjiView. Aby prawidłowo wypełnić te dane, musisz przejść na Activity1.2.0-alpha05, Fragment1.3.0-alpha05i AppCompat1.3.0-alpha01. Dolifecycle-viewmodel-ktxdodano rozszerzenie KotlinfindViewModelStoreOwner(). (aosp/1295522)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
MutableLiveDatatesty lint opublikowane w Lifecycle2.3.0-alpha01nie były publikowane razem z artefaktemlifecycle-livedata-core-ktx. (b/155323109)
Wersja 2.3.0-alpha02
29 kwietnia 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha02 Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SavedStateViewModelFactoryumożliwia teraz przekazywanie wartości nullApplicationdo konstruktora, aby lepiej obsługiwać przypadki, w których nie jest on łatwo dostępny i nie jest potrzebna obsługaAndroidViewModel. (aosp/1285740)
Poprawki błędów
- Poprawiliśmy wydajność uruchamiania „na zimno”, unikając błędu weryfikacji klasy na urządzeniach z API 28 i starszych. (aosp/1282118)
Wersja 2.3.0-alpha01
4 marca 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha01 Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy interfejs
ViewTreeLifecycleOwner.get(View)API umożliwia pobieranie konteneraLifecycleOwnerna podstawie instancjiView. Aby poprawnie wypełnić to pole, musisz przejść na Aktywność1.2.0-alpha01i Fragment1.3.0-alpha01.findViewTreeLifecycleOwnerRozszerzenie Kotlin jest dostępne wlifecycle-runtime-ktx. (aosp/1182361, aosp/1182956) - Dodano nowe sprawdzenie Lint, które ostrzega, gdy ustawiasz wartość
nullw przypadku elementuMutableLiveDatazdefiniowanego w Kotlinie jako niepusty. Jest to dostępne, gdy używasz artefaktówlivedata-core-ktxlublivedata-ktx. (aosp/1154723, aosp/1159092) - Dostępny jest nowy artefakt
lifecycle-runtime-testing, który zawieraTestLifecycleOwnerimplementującyLifecycleOwneri zapewniający bezpieczny wątkowo modyfikowalny obiektLifecycle. (aosp/1242438)
Poprawki błędów
- Artefakt
lifecycle-runtimema teraz unikalną nazwę pakietu. (aosp/1187196)
Wersja 2.2.0
ViewModel-Savedstate w wersji 2.2.0
5 lutego 2020 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 Wersja 2.2.0 zawiera te zatwierdzenia.
Lifecycle ViewModel SavedState ma teraz tę samą wersję co inne artefakty Lifecycle. Działanie 2.2.0 jest identyczne z działaniem 1.0.0.
Wersja 2.2.0
22 stycznia 2020 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0 Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.1.0
- Integracja współprogramów cyklu życia: nowy artefakt
lifecycle-runtime-ktxdodaje integrację między cyklem życia a współprogramami Kotlin.lifecycle-livedata-ktxzostał też rozszerzony, aby wykorzystywać korutyny. Więcej informacji znajdziesz w artykule Korzystanie z korutyn Kotlin z komponentami architektury. - Wycofanie
ViewModelProviders.of(): środowiskoViewModelProviders.of()zostało wycofane. Możesz przekazać wartośćFragmentlubFragmentActivitydo nowego konstruktoraViewModelProvider(ViewModelStoreOwner), aby uzyskać tę samą funkcjonalność podczas korzystania z Fragment1.2.0. lifecycle-extensionsWycofanie artefaktu: w związku z wycofaniemViewModelProviders.of()ta wersja oznacza wycofanie ostatniego interfejsu API wlifecycle-extensions. Ten artefakt należy teraz uznać za całkowicie wycofany. Zdecydowanie zalecamy korzystanie z konkretnych artefaktów cyklu życia, których potrzebujesz (np.lifecycle-service, jeśli używaszLifecycleService, ilifecycle-process, jeśli używaszProcessLifecycleOwner), zamiastlifecycle-extensions, ponieważ w przyszłości nie będzie już dostępna wersja2.3.0lifecycle-extensions.- Gradle Incremental Annotation Processor: procesor adnotacji Lifecycle jest domyślnie przyrostowy.
Jeśli aplikacja jest napisana w języku programowania Java 8, możesz użyć
DefautLifecycleObserver, a jeśli w języku programowania Java 7 –LifecycleEventObserver.
Wersja 2.2.0-rc03
4 grudnia 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-rc03 Wersja 2.2.0-rc03 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd występujący, gdy zamockowany obiekt
ViewModelbył przechowywany w obiekcieViewModelStore, a później wysyłano do niego zapytanie za pomocą domyślnej fabryki. - Naprawiono użycie
Dispatchers.Main.immediatewlaunchWhenCreatedi podobnych metodach, aby były wywoływane synchronicznie podczas odpowiedniego zdarzenia cyklu życia. (aosp/1156203)
Współpraca z osobami z zewnątrz
- Dziękujemy Andersowi Järlebergowi za przesłanie poprawki. (aosp/1156203)
- Dziękujemy Vsevolodowi Tolstopyatovowi z Jetbrains za sprawdzenie implementacji wykonania wbudowanego.
Zmiany zależności
- Rozszerzenia cyklu życia zależą teraz od komponentu Fragment
1.2.0-rc03.
Wersja 2.2.0-rc02
7 listopada 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-rc02 Wersja 2.2.0-rc02 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd w konfiguracji narzędzia ProGuard w bibliotece, który występował na urządzeniach z interfejsem API w wersji 28 lub nowszej, jeśli docelowy interfejs API był starszy niż wersja 29. (b/142778206)
Wersja 2.2.0-rc01
23 października 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-rc01 Wersja 2.2.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
launchWhenCreatedi powiązane metody były wykonywane o 1 klatkę później niż powiązana metoda cyklu życia z powodu używaniaDispatchers.MainzamiastDispatchers.Main.immediate. (aosp/1145596)
Materiały zewnętrzne
- Dziękujemy Nicklasowi Ansmanowi za przesłanie poprawki. (aosp/1145596)
Wersja 2.2.0-beta01
9 października 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-beta01 Wersja 2.2.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono regresję wprowadzoną w Lifecycle 2.2.0-alpha05 w kolejności wywoływania metod
ProcessLifecycleOwneriLifecycleOwnerw przypadku działania przechodzącego w stan rozpoczęty i wznowiony na urządzeniach z Androidem 10. (aosp/1128132) - Naprawiliśmy regresję wprowadzoną w Lifecycle
2.2.0-alpha05, która powodowałaNullPointerExceptionpodczas korzystania z wersji2.0.0lub2.1.0bibliotekilifecycle-process. (b/141536990)
Wersja 2.2.0-alpha05
18 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha05 Wersja 2.2.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Naprawiono warunek wyścigu w narzędziu do tworzenia danych LiveData w rutynach. b/140249349
Wersja 2.2.0-alpha04
5 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha04 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScopei podstawowa implementacjaliveDataużywają terazDispatchers.Main.immediatezamiastDispatchers.Main. (b/139740492)
Współpraca z osobami z zewnątrz
- Dziękujemy Nicklasowi Ansmanowi za pomoc w przeniesieniu projektu na
Dispatchers.Main.immediate. (aosp/1106073)
Wersja 2.2.0-alpha03
7 sierpnia 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha03 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Implementacje interfejsu
ViewModelStoreOwnermogą teraz opcjonalnie implementować interfejsHasDefaultViewModelProviderFactory, aby udostępniać domyślny interfejsViewModelProvider.Factory. Zostało to zrobione w przypadku aktywności1.1.0-alpha02, fragmentu1.2.0-alpha02i nawigacji2.2.0-alpha01. (aosp/1092370, b/135716331)
Zmiany w interfejsie API
- Środowisko wykonawcze
ViewModelProviders.of()zostało wycofane. Aby uzyskać tę samą funkcjonalność, możesz przekazać wartośćFragmentlubFragmentActivitydo nowego konstruktoraViewModelProvider(ViewModelStoreOwner). (aosp/1009889)
Wersja 2.2.0-alpha02
2 lipca 2019 r.
Publikacja androidx.lifecycle:*:2.2.0-alpha02 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Zastąpiono
LiveDataScope.initialValueelementemLiveDataScope.latestValue, który będzie śledzić bieżącą emitowaną wartość blokuliveData. - Dodano nowe przeciążenie do konstruktora
liveData, które przyjmuje parametrtimeoutjako typDuration.
Wersja 2.2.0-alpha01
7 maja 2019 r.
Publikacja androidx.lifecycle:*:2.2.0-alpha01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Ta wersja zawiera nowe funkcje, które dodają obsługę współprogramów Kotlin dla komponentów Lifecycle i LiveData. Szczegółową dokumentację znajdziesz tutaj.
ViewModel-SavedState w wersji 1.0.0
Wersja 1.0.0
22 stycznia 2020 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.
Ważne funkcje w wersji 1.0.0
- Dodano nową klasę SavedStateHandle. Umożliwia to klasom
ViewModeldostęp do zapisanego stanu i dodawanie do niego treści. Ten obiekt można otrzymać w konstruktorze klasyViewModel, a fabryki domyślnie udostępniane przez klasy Fragment i AppCompatActivity automatycznie wstrzykną obiektSavedStateHandle. - Dodano klasę AbstractSavedStateViewModelFactory. Umożliwia tworzenie niestandardowych fabryk dla obiektów
ViewModeli zapewnianie im dostępu do obiektówSavedStateHandle.
ViewModel-Savedstate w wersji 1.0.0-rc03
4 grudnia 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 Wersja 1.0.0-rc03 zawiera te zatwierdzenia.
Zmiany zależności
- ViewModel SavedState w cyklu życia zależy teraz od cyklu życia
2.2.0-rc03.
Viewmodel-Savedstate w wersji 1.0.0-rc02
7 listopada 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 Wersja 1.0.0-rc02 zawiera te zmiany.
Zmiany zależności
- Teraz zależy od cyklu życia
2.2.0-rc02.
ViewModel-SavedState w wersji 1.0.0-rc01
23 października 2019 r.
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 zostaje opublikowana bez zmian w stosunku do wersji 1.0.0-beta01. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
ViewModel-Savedstate w wersji 1.0.0-beta01
9 października 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że pierwsze uzyskanie dostępu do obiektu SavedState ViewModel w
Activity.onActivityResult()skutkowało błędemIllegalStateException. (b/139093676) - Naprawiliśmy
IllegalStateExceptionpodczas korzystania z funkcjiAbstractSavedStateViewModelFactory. (b/141225984)
ViewModel-SavedState w wersji 1.0.0-alpha05
18 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
SavedStateViewModelFactorynie rozszerza jużAbstractSavedStateViewModelFactory, aSavedStateHandlejest tworzony tylko w przypadku obiektów ViewModel, które go wymagają (aosp/1113593).
ViewModel-SavedState w wersji 1.0.0-alpha03
7 sierpnia 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany powodujące niezgodność
lifecycle-viewmodel-savedstatenie zależy już odfragment, a powiązane konstruktorySavedStateViewModelFactory(Fragment)iSavedStateViewModelFactory(FragmentActivity)zostały usunięte.SavedStateViewModelFactoryjest teraz domyślną fabryką dla Activity1.1.0-alpha02, Fragment1.2.0-alpha02i Navigation2.2.0-alpha01. (b/135716331)
ViewModel-SavedState w wersji 1.0.0-alpha02
2 lipca 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Dodano przeciążenie
SavedStateHandle.getLiveData(), które akceptuje wartość domyślną.
Zmiany w interfejsie API
- Nazwa
SavedStateVMFactoryzostała zmieniona naSavedStateViewModelFactory. - Nazwa
AbstractSavedStateVMFactoryzostała zmieniona naAbstractSavedStateViewModelFactory.
ViewModel-Savedstate w wersji 1.0.0-alpha01
13 marca 2019 r.
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 Pełny dziennik zatwierdzeń tej pierwszej wersji znajdziesz tutaj.
Nowe funkcje
- Teraz
ViewModelsmoże współtworzyć stan zapisany. W tym celu użyj nowo wprowadzonej fabryki modelu widokuSavedStateVMFactory, a Twój model widoku powinien mieć konstruktor, który przyjmujeSavedStateHandleobiekt jako parametr.
Wersja 2.1.0
Ważne zmiany od wersji 2.0.0
- Dodano
LifecycleEventObserverw przypadkach, gdy potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API, a nie ukryta klasaGenericLifecycleObserver. - Dodano rozszerzenia ktx dla metod
LiveData.observeiTransformations.*. - Dodano
Transformations.distinctUntilChanged, które tworzy nowy obiekt LiveData, który nie emituje wartości, dopóki nie zmieni się wartość źródłaLiveData. - Dodaliśmy obsługę współprogramów w klasach ViewModel, dodając właściwość rozszerzenia
ViewModel.viewModelScope.
Wersja 2.1.0
5 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.1.0 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Wersja 2.1.0-rc01
2 lipca 2019 r.
androidx.lifecycle:*:2.1.0-rc01 zostaje opublikowana bez zmian w stosunku do wersji androidx.lifecycle:*:2.1.0-beta01. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Wersja 2.1.0-beta01
7 maja 2019 r.
Publikacja androidx.lifecycle:*:2.1.0-beta01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Cykle życia są przenoszone do wersji beta: interfejs API wprowadzony w poprzednich wersjach alfa, np.
liveDatafunkcje rozszerzeń do przekształceń i obserwacji,ViewModelinicjowanie z delegowaniem właściwości i inne, są stabilizowane i nie będą się zmieniać.
Wersja 2.1.0-alpha04
3 kwietnia 2019 r.
Publikacja androidx.lifecycle:*:2.1.0-alpha04 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Zmiana powodująca niezgodność: interfejs API, który obsługuje funkcje
by viewModels()iby activityViewModels(), został zmieniony, aby obsługiwać bezpośrednioViewModelStore, a nie tylkoViewModelStoreOwner. (aosp/932932)
Wersja 2.1.0-alpha03
13 marca 2019 r.
Publikacja androidx.lifecycle:*:2.1.0-alpha03 Pełną listę zmian wprowadzonych w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Pole „
ViewModelProvider.KeyedFactory” zostało usunięte. Drugi interfejs opróczViewModelProvider.Factorynie współdziałał dobrze z nowymi funkcjami, takimi jak delegowanie właściwości w języku Kotlinby viewmodels {}. (aosp/914133)
Wersja 2.1.0-alpha02
30 stycznia 2019 r.
Publikacja androidx.lifecycle 2.1.0-alpha02
Zmiany w interfejsie API
LifecycleRegistryzawiera teraz metodęsetCurrentState(), która zastępuje wycofaną już metodęsetState(). (aosp/880715)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię instancji testowych
ViewModelpo wyczyszczeniu zawierającego elementuViewModelStore. b/122273087
Wersja 2.1.0-alpha01
17 grudnia 2018 r.
Publikacja androidx.lifecycle 2.1.0-alpha01
Nowe funkcje
- Dodano
LifecycleEventObserverw przypadkach, gdy potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API, a nie ukryta klasaGenericLifecycleObserver. - Dodano rozszerzenia ktx dla metod
LiveData.observeiTransformations.*. - Dodano metodę
Transformations.distinctUntilChanged. Tworzy nowy obiektLiveData, który nie emituje wartości, dopóki nie zmieni się wartość źródłowego obiektu LiveData. - Obsługa współprogramów w klasach ViewModel: dodano właściwość rozszerzenia
ViewModel.viewModelScope. - Dodano
ViewModelProvider.KeyedFactory, fabrykę obiektów ViewModel, która w metodziecreateotrzymujekeyiClass.
Wersja 2.0.0
Wersja 2.0.0
21 września 2018 r.
Biblioteka Lifecycle 2.0.0 została wydana z jedną poprawką błędu z 2.0.0-rc01 w ViewModel.
Poprawki błędów
- Naprawiono regułę ProGuard w ViewModel, która nieprawidłowo usuwała konstruktory b/112230489
Wersja 2.0.0-beta01
2 lipca 2018 r.
Poprawki błędów
- Poprawiono regułę ProGuard dla LifecycleObserver, aby zachowywać tylko implementacje, a nie podinterfejsy b/71389427
- Poprawiono reguły ProGuard w ViewModel, aby umożliwić zaciemnianie i zmniejszanie rozmiaru.
Wersje sprzed Androida X
W przypadku wersji Lifecycle sprzed Androida X, które są wymienione poniżej, uwzględnij te zależności:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Wersja 1.1.1
21 marca 2018 r.
Tylko jedna niewielka zmiana: element android.arch.core.util.Function został przeniesiony z arch:runtime do arch:common. Dzięki temu można go używać bez zależności od środowiska wykonawczego, np. w paging:common poniżej.
lifecycle:common jest zależnością lifecycle:runtime, więc ta zmiana nie wpływa bezpośrednio na lifecycle:runtime, tylko na moduły, które są bezpośrednio zależne od lifecycle:common, takie jak Paging.
Wersja 1.1.0
22 stycznia 2018 r.
Zmiany w opakowaniu
Dostępne są teraz nowe, znacznie mniejsze zależności:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
Zmiany w interfejsie API
- Wycofane funkcje
LifecycleActivityiLifecycleFragmentzostały usunięte. Używaj funkcjiFragmentActivity,AppCompatActivitylub obsługiFragment. - Dodano adnotacje
@NonNulldo plikówViewModelProvidersiViewModelStores - Konstruktor
ViewModelProviderszostał wycofany – używaj bezpośrednio jego metod statycznych. ViewModelProviders.DefaultFactoryzostało wycofane. UżywajViewModelProvider.AndroidViewModelFactory- Dodaliśmy statyczną metodę
ViewModelProvider.AndroidViewModelFactory.getInstance(Application), która umożliwia pobieranie statycznego obiektuFactoryodpowiedniego do tworzenia instancjiViewModeliAndroidViewModel.