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.9.4 | - | 2.10.0-beta01 | - | 
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - | 
Deklarowanie zależności
Aby dodać zależność od komponentu Lifecycle, musisz dodać repozytorium Google Maven do projektu. 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.9.4" 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.10.0-beta01" // 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.9.4" 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.10.0-beta01") // 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.9.4" 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.9.4" 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.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.10
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 zdarzenie- Lifecycle.Event.ON_DESTROYprzed przejściem do- Lifeycle.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
- Funkcja 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
- Zmień kod komponentu LifecycleOwnernarememberLifecycleOwner. Funkcja zwraca teraz bezpośrednio wartośćLifecycleOwner. Aby przekazać tego właściciela do subkompozycji, 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 kompozycyjna - LifecycleOwnermoże teraz tworzyć samodzielny cykl życia głównego elementu. Gdy jawnie ustawisz- parent = null, nowy cykl życia będzie działać niezależnie od hosta (np.- Activity,- Fragmentlub- NavBackStackEntry). Rozpocznie się, gdy funkcja kompozycyjna wejdzie w skład kompozycji, i zostanie automatycznie zniszczona, gdy ją opuści. (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
- LifecycleOwnerkomponent kompozycyjny prawidłowo przenosi swój cykl życia do stanu- DESTROYEDpo usunięciu. Zapobiega to potencjalnym wyciekom w przypadku kodu zewnętrznego, który zawiera odniesienie 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
- Usunięto niepotrzebne wewnętrzne pola pomocnicze z LifecycleOwner. 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ę - 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ę fabryczną konstruktora dla CreationExtras, która zapewnia wygodniejszy i bardziej idiomatyczny interfejs Kotlin API. (Iab2bd)
- Dodano 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 konstruktory 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
- Naprawiliśmy błąd związany z niezastosowaniem wtyczki Compose Compiler, który powodował 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 Lifecycle *-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 platform 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 celów 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ć z funkcjągetLiveData. Jeśli spróbujesz użyć obu tych metod do uzyskania dostępu do tego samego stanu, zostanie zgłoszony wyjątek.
- CreationExtraszawiera teraz przeciążenia operatorów podobne do map, które umożliwiają idiomatyczną manipulację treściami w języku Kotlin. Umożliwia używanie właściwości- in,- +=i- +z właściwością- CreationExtras.
Obsługa serializacji KotlinX
- Dzięki obsłudze serializacji KotlinX dodanej w SavedState - 1.3.0wprowadziliśmy- saved, delegata właściwości leniwej, aby ułatwić przechowywanie klas- @Serializablew- SavedStateHandlei automatyczne przywracanie tych klas po zakończeniu i ponownym utworzeniu procesu. Pamiętaj, że- saveddelegat jest leniwy i nie wywoła funkcji- initlambda ani nie zapisze niczego w- SavedStateHandle, 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 i każda próba przeniesieniaLifecyclez tego stanu do innego stanu spowoduje teraz wystąpienie błęduIllegalStateException.
- SavedStateHandlenie zawiera już żadnych- SavedStateProvider.saveState(), w przypadku których zwrócona wartość- Bundlejest pusta.
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 Lint API
- 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 sekcji 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 została wydana 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ś MutableStateSerializerdosavedstate-composezlifecycle-viewmodel-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)
- AbstractSavedStateViewModelFactoryjest wycofana, ponieważ tworzy- SavedStateHandledla każdego- ViewModel, co powoduje niepotrzebne obciążenie. Aby skuteczniej tworzyć- ViewModel, używaj zamiast tego atrybutu- ViewModelProvider.Factoryz atrybutem- CreationExtras.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ącViewModelpoddany testowi 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 korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. 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
- Biblioteka Lifecycle ViewModel SavedStatejest teraz zgodna 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śmy- saved, delegata właściwości leniwej, aby ułatwić przechowywanie klas- @Serializablew- SavedStateHandlei automatyczne przywracanie tych klas po zakończeniu i ponownym utworzeniu procesu. Pamiętaj, że- saveddelegat jest leniwy i nie wywoła funkcji- initlambda ani nie zapisze niczego w- SavedStateHandle, 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ć z funkcjągetLiveData. 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 i każda próba przeniesieniaLifecyclez tego stanu do innego stanu spowoduje teraz wystąpienie błęduIllegalStateException. (I116c4, b/370577987)
- SavedStateHandlenie zawiera już żadnych- SavedStateProvider.saveState(), w przypadku których zwrócona wartość- Bundlejest pusta. (I910b5, b/370577987)
Poprawki błędów
- Lifecycle.eventFlowteraz prawidłowo kończy się, gdy- Lifecyclema wartość- DESTROYED(I293b2, b/374043130)
Wersja 2.9.0-alpha05
16 października 2024 r.
Wersja androidx.lifecycle:lifecycle-*:2.9.0-alpha05 nie zawiera 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 sekcji Cykl życia2.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 życia2.8.6: środowisko wykonawcze cyklu życia w 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 życia2.8.5zaktualizujandroidx.lifecycle.ReportFragmentreguły ProGuard, aby zezwalały na zaciemnianie . (ff898e1)
Wkład zewnętrzny
- Przenieś androidx.compose.ui.platform.LocalLifecycleOwnerdo wspólnego zestawu źródeł (KMP). Dziękujemy Ivanowi Matkovowi z JetBrains za pomoc. (8cd5d03)
- W cyklu życia2.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 zgodne z KMP. (Iea41e)
- Dodanie obsługi linuxArm64platformy Kotlin Multiplatform (I139d3, b/338268719)
Nowe funkcje
- Dostępny jest nowy artefakt KMP, który zawiera klasę ViewModelScenariodo testowania elementów ViewModel w izolacji, z obsługąonCleared(wszystkie platformy) iSavedStateHandle(tylko Android).androidx.lifecycle:lifecycle-viewmodel-testing(337f68d, c9b3409, 9799a95c, b/264602919)
- Tworzenie obiektu ViewModelza pomocą obiektuViewModelProviderjest 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 przeciążenia operatorów podobne do map, które umożliwiają idiomatyczną manipulację treściami w języku Kotlin. Umożliwia używanie właściwości- in,- +=i- +z właściwością- CreationExtras. (Ib4353)
- CreationExtrasimplementuje teraz metody- equals,- hashCodei- toString. (Ib4353)
- NewInstanceFactoryjest teraz dostępny na platformach JVM Desktop i Android. (d3d0892)
- Właściwość rozszerzenia wbudowanego do bezpiecznego udostępniania bazowej aplikacji w języku Kotlin 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 nowszym (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do 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ępny w zestawie wspólnych źródeł (KMP). (6a3f5b3)
- lifecycle-runtime-compose: usunięto- desktopartefaktó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 Lint ma ulepszoną obsługę inteligentnego rzutowania, co pozwala uniknąć fałszywych trafień. (85fed6, b/181042665)
Aktualizacje zależności
- Biblioteka Lifecycle Runtime Compose zależy teraz od Compose Runtime 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 w- LiveData(np. podczas korzystania z- take(1)). (I9c566)
- Metoda Lifecycle*Effectjest teraz idempotentna (tzn. jeśli została wywołana z powodu zatrzymania cyklu życia, nie zostanie wywołana po raz drugi po usunięciu, chyba że cykl życia wróci do stanuSTARTED).onStopOrDispose(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 wsteczną zgodnością biblioteki Lifecycle 2.8 z Compose 1.6.0 i starszymi wersjami podczas używania 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
- Naprawiono błędy CompositionLocal LocalLifecycleOwner not presentpodczas korzystania z Lifecycle w wersji 2.8.X z Compose w wersji 1.6.X lub starszej. Teraz możesz używać Lifecycle w wersji 2.8.2 z dowolną wersją Compose bez konieczności stosowania obejść. (aosp/3105647, b/336842920)
- ViewModelProvidernie będzie już ulegać awarii w przypadku łączenia poprzednich wersji zależności cyklu życia- compileOnlyz wersjami 2.8 lub nowszymi. Rozwiązuje to 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ść od- compose-runtime, co usuwa wspólną zależność od- compose-ui. Artefakt Androida zachowuje- compose-uize względu na zgodność. (aosp/3079334, b/339562627)
- ViewModel- saveableintegracja za pomocą delegatów właściwości korzysta teraz z nazwy klasy jako części automatycznie generowanego klucza, co pozwala uniknąć konfliktów, jeśli wiele klas używa tego samego- SavedStateHandle. (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 interfejsu Compose do- lifecycle-runtime-compose, aby jego interfejsy API pomocnicze oparte na Compose można było używać poza interfejsem Compose.
- 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żna go na przykład używać 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ępować. Umożliwia to wstrzykiwanie własnego dyspozytora i- SupervisorJob()lub zastępowanie domyślnego dyspozytora za pomocą- backgroundScopedostępnego w- runTest. (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 Kotlinie i używa teraz- AutoClosablezamiast- Closeable. Umożliwia teraz dodawanie- AutoCloseableobiektów z- key, które pozwalają na pobieranie ich za pomocą- getCloseable().
- Wywoływanie funkcji - LifecycleStartEffecti- LifecycleResumeEffectbez klucza jest teraz błędem, zgodnie z tą samą konwencją co w przypadku interfejsu- DisposableEffectAPI, który te interfejsy API odzwierciedlają.
- Wycofano - LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)na rzecz- LiveData.toPublisher(lifecycleOwner).
- lifecycle-livedata-core-ktxrozszerzenia Kotlin zostały przeniesione do modułu- lifecycle-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 dotyczy problem:
- lifecycle-commonprzenosi większość interfejsów API do- commoni obsługuje jvm oraz iOS oprócz Androida.
- lifecycle-runtimeprzenosi większość interfejsów API do- commoni obsługuje jvm oraz iOS oprócz Androida.
- lifecycle-runtime-ktxjest teraz pusta, ponieważ wszystkie interfejsy API zostały przeniesione do- lifecycle-runtime.
- lifecycle-runtime-composeprzenosi wszystkie interfejsy API do- commoni udostępnia artefakt Androida, który jest zgodny z obsługą wielu platform w- androidx.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 w ViewModelProvider, które przyjmowały wartość java.lang.Class<T>, mają teraz odpowiednik przyjmujący wartość kotlin.reflect.KClass<T>.
Zachowaliśmy zgodność binarną w Androidzie, ale w porównaniu z wspólnym interfejsem API wprowadziliśmy kilka istotnych zmian w interfejsie API Androida:
- 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 Androidzie.- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy ViewModelProvider.Factoryi użycie metodycreate, która przyjmuje argumentCreationExtras, lub użycie języka Kotlin DSLviewModelFactory.
 
- 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 elementem- EmptyCoroutineContextna platformach, na których element- Dispatchers.Mainnie jest dostępny (np. Linux).
Artefakty, których dotyczy problem:
- lifecycle-viewmodelprzenosi większość interfejsów API do- commoni obsługuje jvm oraz iOS oprócz Androida.
- lifecycle-viewmodel-ktxjest teraz pusta, ponieważ wszystkie interfejsy API zostały przeniesione do- lifecycle-viewmodel.
- lifecycle-viewmodel-composeprzenosi wszystkie interfejsy API do- commoni udostępnia artefakt Androida, który jest zgodny z obsługą wielu platform w- androidx.compose.
Zmiany w zachowaniu
- InitializerViewModelFactory(w tym funkcja konstruktora- viewModelFactory) będzie teraz zwracać błąd- IllegalArgumentException, jeśli dodano już- initializero tym samym- clazz: 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)
- Naprawiliśmy niezamierzoną zmianę kolejności czyszczenia instancji AutoCloseabledołączonych do ViewModelu – przywróciliśmy 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 komputerach z JVM. (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 wieloplatformową obsługąandroidx.compose. Aby uwzględnić tę zmianę, funkcja ComposableviewModelakceptuje teraz wartośćKClassoprócz wartościjava.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ępować. Umożliwia to wstrzykiwanie własnego dyspozytora i- SupervisorJob()lub zastępowanie domyślnego dyspozytora za pomocą- backgroundScopedostępnego w- runTest. (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 w ViewModelProvider, które przyjmowały wartość java.lang.Class<T>, mają teraz odpowiednik przyjmujący wartość kotlin.reflect.KClass<T>.
Zachowaliśmy zgodność binarną w Androidzie, ale w porównaniu z wspólnym interfejsem API wprowadziliśmy kilka istotnych zmian w interfejsie API Androida:
- 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 Androidzie.- W przypadku fabryk niestandardowych zalecamy rozszerzenie klasy ViewModelProvider.Factoryi użycie metodycreate, która przyjmuje argumentCreationExtras, lub użycie języka Kotlin DSLviewModelFactory.
 
- 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 elementem- EmptyCoroutineContextna platformach, na których element- Dispatchers.Mainnie jest dostępny (np. Linux).
Zmiany w zachowaniu
- InitializerViewModelFactory(w tym funkcja konstruktora- viewModelFactory) będzie teraz zwracać błąd- IllegalArgumentException, jeśli dodano już- initializero tym samym- clazz: KClass<VM : ViewModel>. (Ic3a36)
Poprawki błędów
- ViewModel.getCloseableobsługuje teraz zduplikowane klucze: jeśli- keyma już powiązany zasób- AutoCloseable, stary zasób zostanie zastąpiony i natychmiast zamknięty. (Ibeb67)
- Dostęp do viewModelScopewViewModeljest teraz bezpieczny wątkowo. (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 go 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 języku Kotlin (I16f26, b/214568825)
- Rozszerzenia Kotlin lifecycle-viewmodel-ktxzostały przeniesione do podstawowego modułu cyklu życia. (Id787b, b/274800183)
- Rozszerzenia Kotlin lifecycle-runtime-ktxzostały przeniesione do podstawowego modułu cyklu życia. (Ic3686, b/274800183)
- Rozszerzenia Kotlin lifecycle-livedata-core-ktxzostał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 z- AutoCloseablezamiast z- Closeable. 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ów- Closeablez- key, 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ę zawieszania- setCurrentState(), która zapewnia, że przed zwróceniem wartości zostaną ukończone zmiana stanu i wszystkie wywołania zwrotne- LifecycleObserver. W przeciwieństwie do bezpośredniego ustawiania właściwości- currentStatenie używa ona funkcji- runBlocking, dzięki czemu można jej bezpiecznie używać w korutynie, np. w tej dostarczanej przez- runTest.
- Rozszerzenia LiveDatafunkcjimapiswitchMapdziałają teraz tak samo jakdistinctUntilChanged– jeśliLiveDatama 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 zobserveAsState()), ale nie zmieni to sposobu obserwacji – aktualizacje wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacjiLiveData.
- W tej wersji rozwiązano problem, który powodował, że po zakończeniu i ponownym utworzeniu procesu nie były prawidłowo przywracane niestandardowe klasy Parcelable.SavedStateHandleZe 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 typowanej odpowiedniego typu), a dokumentacja dotycząca adnotacjiget,getLiveDataigetStateFlowwyraźnie wskazuje to ograniczenie.
- Usunięto reguły proguard keep powiązane z LifecycleObserver. Oznacza to, że kod chroniony za pomocą ProGuard, który chce używać interfejsów API za pomocą odbicia (np. za pomocą dawno już wycofanej adnotacji@OnLifecycleEvent), będzie musiał podać własne reguły zachowywania w swoim konkretnym przypadku użycia.
Obserwowanie zdarzeń cyklu życia
- Zamiast używać LifecycleEventObserver, moż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 podstawieLifecycle.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żący Lifecycle.Statemożna teraz obserwować za pomocą właściwościLifecycle.currentStateFlow, która zwracaStateFlow, gdzievalueto bieżącyLifecycle.State.
- Użytkownicy Jetpack Compose mogą użyć rozszerzenia Lifecycle.currentStateAsState(), aby bezpośrednio udostępnić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 zakończeniu i ponownym utworzeniu procesu nie były prawidłowo przywracane niestandardowe klasy Parcelable.SavedStateHandleZe 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 typowanej 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
- LifecycleStartEffecti- LifecycleResumeEffectteraz 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 zostaje opublikowany bez zmian. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
- Wersja beta, bez większych zmian w tej wersji.
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 Lint, które zapobiega ustawianiu- Lifecycle.Stateelementu- TestLifecycleOwnerza pomocą pola- currentStatew obrębie korutyny. Sprawdzanie Lint sugeruje teraz zawieszenie- setCurrentState, które umożliwia ustawienie- Lifecycle.Statebez blokowania. (Icf728, b/297880630)
Poprawki błędów
- Rozwiązaliśmy problem z LiveData.switchMap, który polegał na tym, że zwracanie tej samej instancjiLiveDatazarówno podczas pierwszego, jak i kolejnego wywołania 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ę zawieszania- setCurrentState(), dzięki czemu użytkownicy mogą korzystać z- TestLifecycleOwnerw ramach korutyny, np. takiej, jaką udostępnia- runTest. (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 LiveData w Jetpack Compose ma odpowiedni stan w początkowej kompozycji. (I91d2b, b/269479952)
- ViewModel- addCloseable()natychmiast zamyka- Closeable, jeśli- ViewModelotrzymał już wywołanie funkcji- onCleared(). (I4712e, b/280294730)
Poprawki błędów
- Cykl życia2.6.2: rozwiązaliśmy problem, który powodował, że po zakończeniu procesu nie można było prawidłowo przywrócić wartościSavedStateHandle, jeśli stan został przywrócony, wywołano funkcjęsave()bez zapisywania stanu w nadrzędnym elemencieSavedStateRegistry, 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 zwraca- StateFlow, gdzie- valueto bieżąca wartość- Lifecycle.State. (Ib212d, b/209684871)
- Lifecycle.Events można teraz obserwować jako- Flowz- Lifecycle.asFlow().(If2c0f, b/176311030)
- LifecycleResumeEffectDodaliśmy interfejs API, który umożliwia uruchamianie funkcji Compose- SideEffectna podstawie wywołań zwrotnych zdarzeń- Lifecycle.Event.ON_RESUMEi- Lifecycle.Event.ON_PAUSE. (I60386, b/235529345)
- LifecycleStartEffectDodano interfejs API do uruchamiania funkcji Compose- SideEffectna podstawie wywołań zwrotnych zdarzeń- Lifecycle.Event.ON_STARTi- Lifecycle.Event.ON_STOP. (I5a8d1, b/235529345)
- Dodaliśmy interfejs API LifecycleEventEffect, który umożliwia uruchamianie funkcji ComposeSideEffectna 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 terazvaluezwróconego elementuLiveData, jeśli poprzedni elementLiveDatamiał ustawioną wartość. Nie zmienia to sposobu obserwacji – zaktualizowane wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacji wartościLiveDatazwróconej przezdistinctUntilChanged(). (Ib482f)
- Usunięto reguły proguard keep powiązane z LifecycleObserver. Oznacza to, że kod chroniony za pomocą ProGuard, który chce używać interfejsów API za pomocą odbicia, musi podać własne reguły zachowywania dla 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 zakończeniu procesu nie można było prawidłowo przywrócić stanu SavedStateHandle, 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.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 SavedState- 1.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ść w przypadku- LiveData. Dzięki temu możesz odróżnić sytuację, w której- liveData.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 przypadku 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 dyspozytora wstrzymującego 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 Kotlin – duża liczba klas Lifecycle została przekonwertowana na Kotlin. Wszystkie przekonwertowane zajęcia zachowują zgodność binarną z poprzednimi wersjami. W przypadku klas napisanych w Kotlinie te klasy mają niezgodne zmiany w kodzie źródłowym: ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
W tabeli poniżej znajdziesz źródłowe konwersje w przypadku 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 | 
- Wartość dopuszczająca wartość null metody onChangedobiektuObserverutworzonego w Kotlinie jest teraz zgodna z wartością dopuszczającą wartość null typu ogólnego. Jeśli chcesz, abyObserver.onChanged()akceptował typ dopuszczający wartość null, musisz utworzyć instancjęObserverz 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 terazvaluezwróconego elementuLiveData, jeśli poprzedni elementLiveDatamiał ustawioną wartość. Nie zmienia to sposobu obserwacji – zaktualizowane wartości ze źródłaLiveDatabędą nadal stosowane dopiero po rozpoczęciu obserwacji wartościLiveDatazwróconej 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. W przypadku klas napisanych w Kotlinie jest to zmiana powodująca niezgodność ze źródłem – muszą one teraz zastępować właściwość- lifecyclezamiast implementować poprzednią funkcję- getLifecycle(). (I75b4b, b/240298691)
- ViewModelStoreOwnerjest teraz w języku Kotlin. W przypadku klas napisanych w Kotlinie jest to zmiana powodująca niezgodność ze źródłem – 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 niezgodna ze źródłem w przypadku klas napisanych w Kotlinie, które bezpośrednio używały składni takiej jak- Transformations.map– kod Kotlin musi teraz używać składni metody rozszerzenia Kotlin, która była wcześniej dostępna tylko w przypadku używania- lifecycle-livedata-ktx. W przypadku języka programowania Java wersje tych metod, które przyjmują argument- androidx.arch.core.util.Function, są wycofywane i zastępowane wersjami, które przyjmują argument- Function1w języku Kotlin. Ta zmiana zachowuje zgodność binarną. (I8e14f)
- ViewTreeViewModelStoreOwnerjest teraz napisany w języku Kotlin. W przypadku klas napisanych w Kotlinie jest to zmiana powodująca niezgodność ze źródłem – musisz teraz bezpośrednio importować i używać metod rozszerzeń Kotlin w przypadku- Vieww- androidx.lifecycle.setViewTreeViewModelStoreOwneri- androidx.lifecycle.findViewTreeViewModelStoreOwner, aby ustawić i znaleźć wcześniej ustawionego właściciela. 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 niezgodna 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. Metoda- onChanged()używa teraz nazwy- valuedla swojego parametru. (Iffef2, I4995e, b/240298691)
- AndroidViewModel,- AbstractSavedStateViewModelFactory,- LifecycleService,- ServiceLifecycleDispatcheri- ProcessLifecycleOwnersą 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ść w przypadku- LiveData. Dzięki temu możesz odróżnić sytuację, w której- liveData.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 dyspozytora wstrzymującego 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 Kotlinie jest to zmiana powodująca niezgodność ze źródłem – musisz teraz bezpośrednio importować i używać metod rozszerzeń Kotlin w przypadku- Vieww- androidx.lifecycle.setViewTreeLifecycleOwneri- androidx.lifecycle.findViewTreeLifecycleOwner, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje on poprzednie rozszerzenie Kotlin w- lifecycle-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ę w- lifecycle-reactivestreams-ktx, zostały przeniesione do modułu- lifecycle-reactivestreamsi stały się głównym interfejsem kodu napisanego w Kotlinie. Jest to zmiana powodująca niezgodność kodu źródłowego w przypadku kodu napisanego w Kotlinie, jeśli nie używasz jeszcze interfejsów API metod rozszerzeń Kotlin. (I2b1b9, I95d22, b/240298691)
- DefaultLifecycleObserver,- LifecycleEventObserver,- Lifecycle,- LifecycleRegistry,- LifecycleObserveri- ViewModelStoresą teraz napisane w języku Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Poprawki błędów
- SavedStateHandlenie ulega już awarii z- ClassCastExceptionpodczas wywoływania- get()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 z ograniczeniami między różnymi modułami cyklu życia, które 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ą deweloperó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
- Artefakty Lifecyclezawierają 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/242871265
- FlowLiveData.asFlow()tworzy teraz- callbackFlowzamiast korzystać z własnej implementacji- Channel, aby zapewnić bezpieczeństwo wątków i zachowanie kontekstu. (I4a8b2, b/200596935)
- Funkcja FlowLiveDataasLiveDatabędzie teraz zachowywać początkową wartość elementuStateFlowpodczas tworzenia nowego obiektuLiveData. (I3f530, b/157380488)
- Z Cyklu życia2.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 Compose 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 okres ważności spadnie poniżej wartościLifecycle.State, zbieranie danych o przepływie się zatrzyma, 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
- Niestandardowe implementacje AndroidViewModelFactoryteraz prawidłowo wywołują funkcjęcreate(modelClass), gdy używają konstruktoraAndroidViewModelFactoryz zachowywaniem stanu w przypadkuLifecyclew 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 interfejs API- getStateFlow(), który zwraca wartość Kotlin- StateFlowdo monitorowania zmian wartości jako alternatywę dla używania- LiveData.
- ViewModel CreationExtras – podczas pisania niestandardowego - ViewModelProvider.Factorynie trzeba już rozszerzać- AndroidViewModelFactoryani- AbstractSavedStateViewModelFactory, aby uzyskać dostęp odpowiednio do- Applicationlub- SavedStateHandle. Zamiast tego te pola są udostępniane każdej podklasie- ViewModelProvider.Factoryjako- CreationExtrasza pomocą nowego przeciążenia- create:- create(Class<T>, CreationExtras). Te dodatkowe informacje są udostępniane automatycznie przez aktywność lub fragment podczas korzystania odpowiednio z Activity- 1.5.0i Fragment- 1.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 teraz- viewModelFactoryKotlin DSL, który umożliwia definiowanie- ViewModelProvider.Factoryza pomocą co najmniej 1 inicjatora lambda, po jednym dla każdej klasy- ViewModelobsługiwanej przez fabrykę niestandardową, przy użyciu- CreationExtrasjako 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 API- viewModel(), który przyjmuje fabrykę lambda do tworzenia instancji- ViewModelbez konieczności tworzenia niestandardowego- ViewModelProvider.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 Compose Saver – artefakt - lifecycle-viewmodel-composezawiera teraz nowe eksperymentalne interfejsy API w- SavedStateHandle.saveable, które umożliwiają zachowanie podobne do- rememberSaveable, oparte na- SavedStateHandleelementu `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 API - addCloseable()i nowe przeciążenie konstruktora, które umożliwiają dodawanie do obiektu- ViewModelco najmniej 1 obiektu- Closeable. Obiekty te zostaną zamknięte po wyczyszczeniu obiektu- ViewModelbez konieczności ręcznego wykonywania jakichkolwiek czynności w- onCleared().- 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 implementuje- Closeable:- class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }- Możesz go potem użyć w konstruktorze - ViewModel, zachowując ten sam okres istnienia co- viewModelScope:- class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Zmiany w działaniu
- Próba przeniesienia Lifecycle.StatezINITIALIZEDdoDESTROYEDzawsze będzie powodować zgłoszenieIllegalStateException, niezależnie od tego, czyLifecyclema dołączonego obserwatora.
- LifecycleRegistrybędzie teraz usuwać obserwatorów, gdy osiągnie stan- DESTROYED.
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 teraz- NullPointerException, gdy otrzyma- nullzamiast 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 główną kartą, 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 zmiany.
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ętej. (Ib8a7a)
Poprawki błędów
- Naprawiono 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 zatwierdzenia.
Nowe funkcje
- Moduł lifecycle-viewmodel-composeudostępnia terazSavedStateHandleSaver, eksperymentalny interfejs API, 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 2.3 i nowszymi wersjami cyklu życia w języku Java. (I52c8a, b/219545060)
Poprawki błędów
- SavedStateViewFactoryobsługuje teraz używanie- CreationExtrasnawet wtedy, gdy zostało zainicjowane za pomocą- SavedStateRegistryOwner. Jeśli podasz dodatkowe informacje, zainicjowane argumenty zostaną zignorowane. (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 interfejs API- getStateFlow(), który zwraca Kotlin- StateFlowdo monitorowania zmian wartości jako alternatywę dla używania- LiveData. (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
- Dodano interfejs addCloseable()API i nowe przeciążenie konstruktora, które umożliwiają dodawanie do obiektuViewModelco najmniej 1 obiektuCloseable. ObiektViewModelzostanie zamknięty po wyczyszczeniu bez konieczności ręcznego wykonywania żadnych czynności w obiekcieonCleared(). (I55ea0)
- lifecycle-viewmodeludostępnia teraz- InitializerViewModelFactory, które umożliwia dodawanie funkcji lambda do obsługi określonych klas- ViewModelprzy użyciu- CreationExtrasjako głównego źródła danych. (If58fc, b/216687549)
- lifecycle-viewmodel-composeudostępnia teraz interfejs API- viewModel(), który przyjmuje fabrykę funkcji lambda do tworzenia instancji- ViewModelbez konieczności tworzenia niestandardowego elementu- ViewModelProvider.Factory. (I97fbb, b/216688927)
Zmiany w interfejsie API
- Możesz teraz utworzyć ViewModelz użyciemCreationExtrasza pomocąlifecycle-viewmodel-compose. (I08887, b/216688927)
Zmiany w działaniu
- Próba przeniesienia Lifecycle.StatezINITIALIZEDdoDESTROYEDzawsze będzie powodować błądIllegalStateException, niezależnie od tego, czyLifecyclema dołączony obserwator. (I7c390, b/177924329)
- LifecycleRegistrybędzie teraz usuwać obserwatorów, gdy osiągnie stan- DESTROYED. (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 Kotlin. Poprawiło to możliwość przyjmowania 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 działaniu
- SavedStateHandleprawidłowo przechowuje teraz wartość domyślną, gdy nie ma wartości dla określonego klucza. (I1c6ce, b/178510877)
Poprawki błędów
- W Lifecycle 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świetlany jest teraz ulepszony komunikat o błędzie. (I340f7, b/177667711)
- Model widoku możesz teraz utworzyć za pomocą funkcji CreationExtras, korzystając zAndroidViewModelFactorybez konfigurowania 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 tworzymy podstawy do restrukturyzacji 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 itd.), 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 nowy przeciążony wariant 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: ten- Stringzapewnia dostęp do klucza niestandardowego przekazanego do- ViewModelProvider.get().
- ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYzapewnia dostęp do zajęć- Application.
- SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYzapewnia dostęp do- SavedStateRegistryOwner, który jest używany do tworzenia tego obiektu ViewModel.
- SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYzapewnia dostęp do- ViewModelStoreOwner, który jest używany do tworzenia tego obiektu ViewModel.
- SavedStateHandleSupport.DEFAULT_ARGS_KEYzapewnia dostęp do- Bundleargumentów, które powinny być użyte do utworzenia- SavedStateHandle.
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 dotychczasowe 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 polegania na ś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 CreationExtras z SavedStateHandleSupport, aby utworzyć SavedStateHandle tylko dla jednego elementu ViewModel, który tego potrzebuje. (Ia6654, b/188541057)
Niestandardowe CreationExtras można udostępnić, zastępując getDefaultViewModelCreationExtras() w ComponentActivity lub Fragment. Dzięki temu będą one dostępne dla niestandardowego ViewModelProvider.Factory jako wbudowana forma wspomaganego wstrzykiwania. Te dodatki będą automatycznie dostępne w niestandardowej klasie Factory, gdy będą 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 i przywróconych, a jako źródło informacji będzie używać tylko wartości przywróconych. (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 i ponownym utworzeniu procesu, nawet jeśli została specjalnie usunięta zSavedStateHandle. W związku z tymSavedStateHandlenie będzie już łączyć wartości domyślnych i przywróconych, a jako źródło informacji będzie używać tylko wartości przywróconych. (I53a4b)
- lifecycle-processzależy teraz od Androidx Startup 1.1.1, w którym naprawiono regresję polegającą na tym, że użycie- ProcessLifecycleInitializerpowodowało- StartupException. (b/216490724)
Wersja 2.4.0
27 października 2021 roku
Publikacja androidx.lifecycle:lifecycle-*:2.4.0 Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
- Środowisko wykonawcze @OnLifecycleEventzostało wycofane. Zamiast tego użyj polaLifecycleEventObserverlubDefaultLifecycleObserver.
- 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 do współprogramów:
- Lifecycle.repeatOnLifecycle, interfejs API, który wykonuje blok kodu w korutynie, gdy stan cyklu życia jest co najmniej w określonym stanie. Blok zostanie anulowany i ponownie uruchomiony, gdy cykl życia będzie wchodzić w stan docelowy i z niego wychodzić.
- Flow.flowWithLifecycle, interfejs API, który emituje wartości z przepływu nadrzędnego, gdy cykl życia jest w określonym stanie.
- Element 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 teraz- androidx.startupdo inicjowania- ProcessLifecycleOwner.- Wcześniej zajmował się tym - androidx.lifecycle.ProcessLifecycleOwnerInitializer.- Jeśli w przeszłości używasz - tools:node="remove"do inicjowania cyklu życia procesu, wykonaj te czynności:- ContentProvider- <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 wydana 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
- Środowisko wykonawcze @OnLifecycleEventzostało wycofane. Zamiast tego należy użyćLifecycleEventObserverlubDefaultLifecycleObserver. (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ść ze źródłem: 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 test RepeatOnLifecycleWrongUsagedolifecycle-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)
- Udostępnij ProcessLifecycleInitializerpublicznie, aby inneandroidx.startup.Initializermogły używać ich jako zależności. (I94c31)
Poprawki błędów
- Rozwiązaliśmy problem z NullSafeMutableLiveDatasprawdzaniem kodu, który występował, gdy pole zawierało modyfikatory. (#147, b/183696616)
- Rozwiązaliśmy kolejny problem z kontrolą jakości NullSafeMutableLiveDatapodczas używania typów ogólnych. (#161, b/184830263)
Wkład zewnętrzny
- Dziękujemy maxsav za ulepszenie sprawdzania kodu NullSafeMutableLiveData. (#147, b/183696616)
- Dziękujemy kozaxinan za ulepszenie NullSafeMutableLiveDatasprawdzania kodu. (#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 teraz- androidx.startupdo inicjowania- ProcessLifecycleOwner.- Wcześniej zajmował się tym - androidx.lifecycle.ProcessLifecycleOwnerInitializer.- Jeśli w przeszłości używasz - tools:node="remove"do inicjowania cyklu życia procesu, wykonaj te czynności:- ContentProvider- <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 Flow.flowWithLifecycleAPI, który emituje wartości z przepływu nadrzędnego, gdy cykl życia jest w określonym stanie, za pomocą interfejsuLifecycle.repeatOnLifecycleAPI. Jest to alternatywa dla nowego interfejsu APILifecycleOwner.addRepeatinJob. (I0f4cd)
Poprawki błędów
- Od wersji Lifecycle 2.3.1: reguła lint NonNullableMutableLiveDatamoże teraz prawidłowo rozróżniać zmienne pól o różnej możliwości przyjmowania 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()ma teraz opcjonalny parametr- ViewModelStoreOwner, co ułatwia współpracę z właścicielami innymi niż- LocalViewModelStoreOwner. Możesz na przykład użyć adnotacji- viewModel(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ą Compose 1.0.0-beta08.
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ą Compose 1.0.0-beta07.
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-composewandroidx.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ść null- ViewModelStoreOwner, aby lepiej określać, czy w bieżącej kompozycji jest dostępny element- ViewModelStoreOwner. Interfejsy API, które wymagają- ViewModelStoreOwner, np.- viewModel()i- NavHost, nadal zgłaszają wyjątek, jeśli nie ustawiono- ViewModelStoreOwner. (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 teraz funkcje- provides, które można wykorzystywać w- CompositionLocalProvider, zastępując interfejs- asProvidableCompositionLocal()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
Cykl życia 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 lint NonNullableMutableLiveDatamoże teraz prawidłowo rozróżniać zmienne pól o różnej możliwości przyjmowania 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.
Główne zmiany od wersji 2.2.0
- SavedStateHandleobsługuje klasy, które nie mogą być przekazywane w pakietach:- SavedStateHandleobsługuje teraz leniwą serializację, umożliwiając wywołanie- setSavedStateProvider()dla danego klucza, co zapewnia- SavedStateProvider, który otrzyma wywołanie zwrotne do- saveState(), gdy- SavedStateHandlezostanie poproszony o zapisanie swojego stanu. Zobacz Zapisywanie klas, których nie można przekazać.
- Wymuszanie zachowań związanych z cyklem ż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ów- LifecycleRegistrynależących do Twoich komponentów możesz wyraźnie zrezygnować ze sprawdzania za pomocą- LifecycleRegistry.createUnsafe(...), ale musisz wtedy zadbać o odpowiednią synchronizację, gdy do tego obiektu- LifecycleRegistryuzyskuje 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. Dodano metodęgetTargetState(), która udostępniaState, do którego cykl życia przejdzie bezpośrednio poEvent.
- withStateAtLeast: dodano interfejsy API- Lifecycle.withStateAtLeast, które oczekują na etap cyklu życia i synchronicznie wykonują 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 metod- when*, ponieważ nie zezwalają na uruchamianie kodu zawieszającego ani nie korzystają z niestandardowego dyspozytora. (aosp/1326081)
- ViewTreeInterfejsy API: nowe interfejsy API- ViewTreeLifecycleOwner.get(View)i- ViewTreeViewModelStoreOwner.get(View)umożliwiają pobieranie odpowiednio kontenerów- LifecycleOwneri- ViewModelStoreOwnerna podstawie instancji- View. Aby prawidłowo wypełnić te pola, musisz przejść na Activity- 1.2.0i Fragment- 1.3.0oraz AppCompat 1.3.0-alpha01 lub nowszy. Rozszerzenia Kotlin- findViewTreeLifecycleOwneri- findViewTreeViewModelStoreOwnersą dostępne odpowiednio w- lifecycle-runtime-ktxi- lifecycle-viewmodel-ktx.
- LiveData.observe()Wycofanie rozszerzenia Kotlin: rozszerzenie Kotlin- LiveData.observe()niezbędne do używania składni lambda zostało wycofane, ponieważ nie jest już 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()wSavedStateHandlejest teraz spójna przed zapisaniem stanu i po jego zapisaniu – obejmuje teraz klucze używane wcześniej zsetSavedStateProvider(), a także klucze używane zset()igetLiveData(). (aosp/1517919, b/174713653)
Wkład zewnętrzny
- Interfejsy API do zawieszania współprogramów uwzględniających cykl życia lepiej obsługują teraz wywołania funkcji yield(). Dzięki 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 Kotlin- LiveData.observe()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 zatwierdzenia.
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
- Dodano statyczne metody pomocnicze downFrom(State),downTo(State),upFrom(State),upTo(State)doLifecycle.Eventdo generowaniaEventna podstawieStatei kierunku przejścia. Dodano 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 zezwalają na uruchamianie kodu zawieszającego ani 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ów- LifecycleRegistrynależących do Twoich komponentów możesz wyraźnie zrezygnować ze sprawdzania, używając- LifecycleRegistry.createUnsafe(...), ale musisz wtedy zadbać o odpowiednią synchronizację, gdy ten obiekt- LifecycleRegistryjest używany w różnych wątkach (Ie7280, b/137392809).
Poprawki błędów
- Naprawiliśmy awarię w NullSafeMutableLiveData. (b/159987480)
- Naprawiono ObsoleteLintCustomCheckw przypadku sprawdzania kodu za pomocą narzędzia Lint w pakiecie zlifecycle-livedata-core-ktx(a w szczególności zNullSafeMutableLiveData). (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 teraz przypadki ponownego wejścia, unikając zduplikowanych wywołań funkcji- onActive()lub- onInactive(). (b/157840298)
- Rozwiązaliśmy problem, który powodował, że lintowanie nie działało w Android Studio 4.1 Canary 6 lub nowszym. (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
- Naprawiliśmy błąd w NonNullableMutableLiveDatasprawdzaniu Lint. (b/157294666)
- NonNullableMutableLiveDataSprawdzanie kodu obejmuje teraz znacznie więcej przypadków, w których- nullwartość została ustawiona w- MutableLiveDataz 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. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- SavedStateHandleobsługuje teraz leniwą serializację, umożliwiając wywołanie- setSavedStateProvider()dla danego klucza i podanie- SavedStateProvider, które otrzyma wywołanie zwrotne do- saveState(), gdy- SavedStateHandlezostanie poproszony o zapisanie swojego stanu. (b/155106862)
- Nowy interfejs ViewTreeViewModelStoreOwner.get(View)API umożliwia pobieranie konteneraViewModelStoreOwnerna podstawie instancjiView. Aby poprawnie wypełnić te pola, 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 MutableLiveDatasprawdzanie Lint opublikowane w Lifecycle2.3.0-alpha01nie było 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 null- Applicationdo konstruktora, aby lepiej obsługiwać przypadki, w których nie jest on łatwo dostępny i nie jest potrzebna obsługa- AndroidViewModel. (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ć te pola, 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 nowy test Lint, który 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 modyfikowalnyLifecycle. (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.
Biblioteka Lifecycle ViewModel SavedState ma teraz tę samą wersję co inne artefakty Lifecycle. Działanie typu 2.2.0 jest identyczne z działaniem typu 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 z korutynami cyklu życia: nowy artefakt lifecycle-runtime-ktxdodaje integrację między cyklem życia a korutynami Kotlin. Rozszerzyliśmy teżlifecycle-livedata-ktx, aby wykorzystać korutyny. Więcej informacji znajdziesz w artykule Korzystanie z korutyn Kotlin z komponentami architektury.
- Wycofanie ViewModelProviders.of():ViewModelProviders.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 wycofaniem- ViewModelProviders.of()ta wersja oznacza wycofanie ostatniego interfejsu API w- lifecycle-extensions, dlatego 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żywasz- LifecycleService, i- lifecycle-process, jeśli używasz- ProcessLifecycleOwner), zamiast- lifecycle-extensions, ponieważ w przyszłości nie będzie dostępna wersja- 2.3.0- lifecycle-extensions.
- Gradle Incremental Annotation Processor: procesor adnotacji Lifecycle jest domyślnie przyrostowy.
Jeśli Twoja aplikacja jest napisana w języku programowania Java 8, możesz użyć DefautLifecycleObserver, a jeśli jest napisana w języku programowania Java 7, możesz użyćLifecycleEventObserver.
Wersja 2.2.0-rc03
4 grudnia 2019
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-rc03  Wersja 2.2.0-rc03 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że gdy zamockowany obiekt ViewModelbył przechowywany w obiekcieViewModelStorei później wykonywano na nim zapytanie za pomocą domyślnej fabryki, występował błąd.
- Naprawiono użycie Dispatchers.Main.immediatewlaunchWhenCreatedi podobnych metodach, aby były wywoływane synchronicznie podczas odpowiedniego zdarzenia cyklu życia. (aosp/1156203)
Wkład użytkowników zewnętrznych
- 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ż 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)
Wkład użytkowników zewnętrznych
- 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 ProcessLifecycleOwneriLifecycleOwnerw przypadku przejścia aktywności do stanu rozpoczętej i wznowionej na urządzeniach z Androidem 10. (aosp/1128132)
- Rozwiązaliśmy problem regresji wprowadzony w Lifecycle 2.2.0-alpha05, który powodował błądNullPointerExceptionpodczas 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 wyścig w konstruktorze coroutine livedata. b/140249349
Wersja 2.2.0-alpha04
5 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha04  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- lifecycleScope,- whenCreated,- whenStarted,- whenResumed,- viewModelScopei implementacja funkcji- liveDataużywają teraz- Dispatchers.Main.immediatezamiast- Dispatchers.Main. (b/139740492)
Wkład użytkowników zewnętrznych
- Dziękujemy Nicklasowi Ansmanowi za przeniesienie do Dispatchers.Main.immediate. (aosp/1106073)
Wersja 2.2.0-alpha03
7 sierpnia 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha03  Zatwierdzenia zawarte 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
- ViewModelProviders.of()zostało wycofane. Aby uzyskać tę samą funkcjonalność, możesz przekazać wartość- Fragmentlub- FragmentActivitydo nowego konstruktora- ViewModelProvider(ViewModelStoreOwner). (aosp/1009889)
Wersja 2.2.0-alpha02
2 lipca 2019 r.
Publikacja androidx.lifecycle:*:2.2.0-alpha02  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Zastąpiliśmy zmienną LiveDataScope.initialValuezmiennąLiveDataScope.latestValue, która 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 zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Ta wersja zawiera nowe funkcje, które dodają obsługę korutyn w języku 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że być odbierany w konstruktorze klasyViewModel, a fabryki domyślnie udostępniane przez Fragmenty i AppCompatActivity będą automatycznie wstrzykiwaćSavedStateHandle.
- 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
Publikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03  Wersja 1.0.0-rc03 zawiera te zmiany.
Zmiany zależności
- Lifecycle ViewModel SavedState zależy teraz od Lifecycle 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 zatwierdzenia.
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 opublikowany bez zmian w stosunku do 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 zatwierdzenia.
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)
- Usunęliśmy IllegalStateExceptionpodczas korzystania zAbstractSavedStateViewModelFactory. (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 jest już rozszerzany- AbstractSavedStateViewModelFactory, a- SavedStateHandlejest tworzony tylko w przypadku obiektów ViewModel, które tego 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 zawarte w tej wersji znajdziesz tutaj.
Zmiany powodujące niezgodność
- lifecycle-viewmodel-savedstatenie zależy już od- fragment, a powiązane z nim konstruktory- SavedStateViewModelFactory(Fragment)i- SavedStateViewModelFactory(FragmentActivity)zostały usunięte.- SavedStateViewModelFactoryjest teraz domyślnym fabrycznym ustawieniem dla Activity- 1.1.0-alpha02, Fragment- 1.2.0-alpha02i Navigation- 2.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 zawarte 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 log zatwierdzeń tej pierwszej wersji znajdziesz tutaj.
Nowe funkcje
- Teraz ViewModelsmoże współtworzyć savedstate. W tym celu użyj nowo wprowadzonej fabryki modelu widokuSavedStateVMFactory, a Twój ViewModel powinien mieć konstruktor, który przyjmuje obiektSavedStateHandlejako parametr.
Wersja 2.1.0
Ważne zmiany od wersji 2.0.0
- Dodano LifecycleEventObserverw przypadku, 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.
- Dodano obsługę korutyn w klasach ViewModel przez dodanie właściwości rozszerzenia ViewModel.viewModelScope.
Wersja 2.1.0
5 września 2019 r.
Publikacja androidx.lifecycle:lifecycle-*:2.1.0  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-rc01
2 lipca 2019 r.
androidx.lifecycle:*:2.1.0-rc01 zostaje opublikowany bez zmian w stosunku do androidx.lifecycle:*:2.1.0-beta01.  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-beta01
7 maja 2019 r.
Publikacja androidx.lifecycle:*:2.1.0-beta01  Zatwierdzenia zawarte 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 zawarte 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 zawartych w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Usunięto kartę ViewModelProvider.KeyedFactory. Drugi interfejs opróczViewModelProvider.Factorynie pasował do nowych funkcji, takich 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ą metodę- setState(). (aosp/880715)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię instancji ViewModel, gdy zawierający elementViewModelStorezostał wyczyszczony. b/122273087
Wersja 2.1.0-alpha01
17 grudnia 2018 r.
Publikacja androidx.lifecycle 2.1.0-alpha01
Nowe funkcje
- Dodano LifecycleEventObserverw przypadku, 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 korutyn w klasach ViewModel: dodano właściwość rozszerzenia ViewModel.viewModelScope.
- Dodano ViewModelProvider.KeyedFactory, fabrykę obiektów ViewModel, która otrzymujekeyiClassw metodziecreate.
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 klasy LifecycleObserver, aby zachowywać tylko implementacje, a nie podinterfejsy b/71389427
- Poprawiono reguły ProGuard dla 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: android.arch.core.util.Function 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.0
- android.arch.lifecycle:viewmodel:1.1.0
Zmiany w interfejsie API
- Wycofane funkcje LifecycleActivityiLifecycleFragmentzostały usunięte. Używaj funkcjiFragmentActivity,AppCompatActivitylubFragment.
- Do plików ViewModelProvidersiViewModelStoresdodano adnotacje@NonNull
- Konstruktor ViewModelProviderszostał wycofany – używaj bezpośrednio jego metod statycznych.
- ViewModelProviders.DefaultFactoryzostało wycofane. Używaj- ViewModelProvider.AndroidViewModelFactory
- Dodano statyczną metodę ViewModelProvider.AndroidViewModelFactory.getInstance(Application), która umożliwia pobieranie statycznego obiektuFactoryodpowiedniego do tworzenia instancjiViewModeliAndroidViewModel.
