Cykl życia
Ta tabela zawiera wszystkie artefakty w grupie androidx.lifecycle
.
Artefakt | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
cykl życia-* | 2.8.3 | - | - | - |
cykl życia-widok modelu-kompozycja | 2.8.3 | - | - | - |
Deklarowanie zależności
Aby dodać zależność do cyklu życia, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.3" 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" // 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.8.3" 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") // 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.8.3" 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.8.3" 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ć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 2.8
Wersja 2.8.3
1 lipca 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.3
została zwolniona. Wersja 2.8.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną cyklu życia 2.8 z Compose w wersji 1.6.0 i starszymi podczas korzystania z zmniejszania kodu. (Aosp/3133056, b/346808608)
Wersja 2.8.2
12 czerwca 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.2
została zwolniona. Wersja 2.8.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błędy (
CompositionLocal LocalLifecycleOwner not present
) występujące podczas używania funkcji Cykl życia 2.8.X z funkcją Compose w wersji 1.6.X lub starszej. Z wersji 2.8.2 możesz teraz korzystać z dowolnej wersji Compose bez konieczności obejścia problemów. (Aosp/3105647, b/336842920) ViewModelProvider
nie będzie już ulegać awarii podczas łączenia poprzednich wersji zależności cyklu życiacompileOnly
z wersjami 2.8 lub nowszymi, aby rozwiązać problemy z bibliotekami takimi jak LeakCanary. (I80383, b/341792251)
Wersja 2.8.1
29 maja 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.1
została zwolniona. Wersja 2.8.1 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
lifecycle-viewmodel-compose
ma teraz wspólną zależność tylko odcompose-runtime
, usuwając swoją wspólną zależność odcompose-ui
. Artefakt Androida zachowuje zgodnośćcompose-ui
. (Aosp/3079334, b/339562627) - Integracja aplikacji
ViewModel
z funkcjąsaveable
za pomocą przedstawicieli usługi wykorzystuje teraz nazwę klasy jako część automatycznie wygenerowanego klucza. Pozwala to uniknąć konfliktów w sytuacji, gdy wiele klas używa tego samego obiektuSavedStateHandle
. (Aosp/3063463).
Wersja 2.8.0
14 maja 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0
została zwolniona. Wersja 2.8.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.7.0
- Usługa
LocalLifecycleOwner
została przeniesiona z interfejsu tworzenia wiadomości dolifecycle-runtime-compose
, dzięki czemu jej pomocnicze interfejsy API oparte na Compose można używać poza tym interfejsem. - Artefakt
lifecycle-runtime-compose
zawiera teraz interfejsy APIdropUnlessResumed
idropUnlessStarted
, które umożliwiają pomijanie kliknięć lub innych zdarzeń, nawet gdy wartośćLifecycleOwner
spadnie poniżej wartościLifecycle.State
. Możesz na przykład użyć tej funkcji w narzędziu Nawigacja, aby uniknąć obsługi zdarzeń kliknięcia po rozpoczęciu przejścia na inny ekran:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
jest teraz parametrem konstruktora, który można zastępować, dzięki czemu możesz wprowadzić własnego dyspozytora iSupervisorJob()
lub zastąpić wartość domyślną za pomocą parametrubackgroundScope
dostępnego w usłudzerunTest
. (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) }
Język
ViewModel
został przepisany w języku Kotlin i używa terazAutoClosable
zamiastCloseable
. Obsługuje teraz dodawanie obiektówAutoCloseable
za pomocą metodykey
, która umożliwia ich pobieranie przezgetCloseable()
.Wywołanie
LifecycleStartEffect
iLifecycleResumeEffect
bez klucza jest teraz błędem zgodnie z tą samą konwencją co interfejs APIDisposableEffect
powielany przez te interfejsy API.Wycofano pole
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
na rzeczLiveData.toPublisher(lifecycleOwner)
.Rozszerzenia kotlin (
lifecycle-livedata-core-ktx
) zostały przeniesione do modułulifecycle-livedata-core
.Element
NullSafeMutableLiveData
został zrefaktoryzowany, aby uniknąć wielu wyników fałszywie pozytywnych.
Cykl życia Kotlin – zgodność wieloplatformowa
Podstawowe interfejsy API cyklu życia w systemach Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
i LifecycleRegistry
są teraz dostarczane w artefaktach zgodnych z platformą wieloplatformową Kotlin.
Artefakty, których to dotyczy:
lifecycle-common
przenosi większość interfejsów API docommon
i obsługuje jvm oraz iOS nie tylko na Androidzie.lifecycle-runtime
przenosi większość interfejsów API docommon
i obsługuje jvm oraz iOS nie tylko na Androidzie.- Plik
lifecycle-runtime-ktx
jest teraz pusty, a wszystkie interfejsy API zostały przeniesione do folderulifecycle-runtime
. lifecycle-runtime-compose
przenosi wszystkie interfejsy API docommon
i wysyła artefakt Androida zgodnie z obsługą wieloplatformowąandroidx.compose
.
Zgodność modelu ViewModel Kotlin na wielu platformach
Artefakt i interfejsy API lifecycle-viewmodel
, takie jak ViewModel
, ViewModelStore
, ViewModelStoreOwner
i ViewModelProvider
, są teraz dostarczane w artefaktach zgodnych z platformą wieloplatformową Kotlin.
Aby uwzględnić tę zmianę, metody, takie jak te w systemie ViewModelProvider
, które wymagały wykonania java.lang.Class<T>
, mają teraz równoważną metodę, która wymaga kotlin.reflect.KClass<T>
.
Zgodność plików binarnych na Androidzie została zachowana, ale podczas porównywania platformy interfejsu API Androida z wspólną platformą API wystąpiło kilka istotnych zmian:
- Tworzenie instancji
ViewModelProvider
odbywa się teraz za pomocą metodViewModelProvider.create()
, a nie bezpośrednio przy użyciu jego konstruktora. - Aplikacje
ViewModelProvider.NewInstanceFactory
iViewModelProvider.AndroidViewModelFactory
są dostępne tylko na Androidzie.- Zalecamy używanie fabryk niestandardowych, które rozpoczynają się od
ViewModelProvider.Factory
, i używają metodycreate
, która wymagaCreationExtras
lub DSLviewModelFactory
Kotlin.
- Zalecamy używanie fabryk niestandardowych, które rozpoczynają się od
- Jeśli na platformach innych niż JVM (innych niż JVM) użyjesz
ViewModelProvider
bez niestandardowej fabryki, otrzymaszUnsupportedOperationException
. Na platformach JVM zgodność jest zachowywana dzięki użyciu nieargumentowego konstruktora ViewModel, jeśli nie podano niestandardowej fabryki. - Parametr
viewModelScope
zwraca wartośćEmptyCoroutineContext
w przypadku platform, na których interfejsDispatchers.Main
jest niedostępny (np. Linux).
Artefakty, których to dotyczy:
lifecycle-viewmodel
przenosi większość interfejsów API docommon
i obsługuje jvm oraz iOS nie tylko na Androidzie.- Plik
lifecycle-viewmodel-ktx
jest teraz pusty, a wszystkie interfejsy API zostały przeniesione do folderulifecycle-viewmodel
. lifecycle-viewmodel-compose
przenosi wszystkie interfejsy API docommon
i wysyła artefakt Androida zgodnie z obsługą wieloplatformowąandroidx.compose
.
Zmiany w działaniu
InitializerViewModelFactory
(w tym funkcja konstruktoraviewModelFactory
) będzie teraz zwracać błądIllegalArgumentException
, jeśli zostało już dodaneinitializer
z tym samym identyfikatoremclazz: KClass<VM : ViewModel>
. (IC3a36).
Znane problemy
lifecycle-*:2.8.0
wymaga co najmniej 1.7.0-alpha05 (b/336842920).
Wersja 2.8.0-rc01
1 maja 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-rc01
została zwolniona. Wersja 2.8.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że profil podstawowy klas
lifecycle-common
nie był prawidłowo spakowany. Są one teraz połączone wlifecycle-runtime
AAR. (Aosp/3038274, b/322382422) - Naprawiliśmy niezamierzoną zmianę kolejności, w jakiej instancji
AutoCloseable
dołączone do modelu widoku danych – poprzednia kolejność:addCloseable(String, AutoCloseable)
, potemaddClosable(AutoCloseable)
, a następnieonCleared()
. (Aosp/3041632). - Popraw domyślne działanie tworzenia w
viewModelScope
w środowisku natywnym i środowisku JVM. (Aosp/3039221).
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy Victorowi Kroppowi za usprawnienie sprawdzania wątku głównego na pulpicie JVM. (Aosp/3037116).
Wersja 2.8.0-beta01
17 kwietnia 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-beta01
została zwolniona. Wersja 2.8.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Artefakt
lifecycle-runtime-compose
jest teraz zgodny z platformą Kotlin Multiplatform – jego kod zostaje przeniesiony docommon
i wysyła artefakt Androida zgodny z obsługą wieloplatformowąandroidx.compose
. (If7a71, I4f4a0, b/331769623)
Wersja 2.8.0-alpha04
3 kwietnia 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-alpha04
została zwolniona. Wersja 2.8.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Artefakt
lifecycle-viewmodel-compose
jest teraz zgodny z platformą Kotlin Multiplatform – jego kod zostaje przeniesiony docommon
i wysyła artefakt Androida zgodny z obsługą wieloplatformowąandroidx.compose
. Zgodnie z tą zmianą metoda kompozycyjnaviewModel
akceptuje teraz oprócz metodyjava.lang.Class
obiektyKClass
. (b/330323282)
Poprawki błędów
- Element
NullSafeMutableLiveData
został zrefaktoryzowany, aby uniknąć wielu wyników fałszywie pozytywnych. (I2d8c1, Iafb18, I03463, I7ecef)
Aktualizacja zależności
- Artefakt
lifecycle-viewmodel-compose
korzysta teraz z funkcji Compose 1.6.0. - Cykl życia zależy teraz od instalatora profilu 1.3.1.
Wersja 2.8.0-alfa03
20 marca 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-alpha03
została zwolniona. Wersja 2.8.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
ViewModel.viewModelScope
jest teraz parametrem konstruktora, który można zastępować, dzięki czemu możesz wprowadzić własnego dyspozytora iSupervisorJob()
lub zastąpić wartość domyślną za pomocą parametrubackgroundScope
dostępnego w usłudzerunTest
. (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 platformą Kotlin – wieloplatformowa
Artefakt i interfejsy API lifecycle-viewmodel
, takie jak ViewModel
, ViewModelStore
, ViewModelStoreOwner
i ViewModelProvider
, są teraz dostarczane w artefaktach zgodnych z platformą wieloplatformową Kotlin. (b/214568825)
Aby uwzględnić tę zmianę, metody, takie jak te w systemie ViewModelProvider
, które wymagały wykonania java.lang.Class<T>
, mają teraz równoważną metodę, która wymaga kotlin.reflect.KClass<T>
.
Zgodność plików binarnych na Androidzie została zachowana, ale podczas porównywania platformy interfejsu API Androida z wspólną platformą API wystąpiło kilka istotnych zmian:
- Tworzenie instancji
ViewModelProvider
odbywa się teraz za pomocą metodViewModelProvider.create()
, a nie bezpośrednio przy użyciu jego konstruktora. - Aplikacje
ViewModelProvider.NewInstanceFactory
iViewModelProvider.AndroidViewModelFactory
są dostępne tylko na Androidzie.- Zalecamy używanie fabryk niestandardowych, które rozpoczynają się od
ViewModelProvider.Factory
, i używają metodycreate
, która wymagaCreationExtras
lub DSLviewModelFactory
Kotlin.
- Zalecamy używanie fabryk niestandardowych, które rozpoczynają się od
- Jeśli na platformach innych niż JVM (innych niż JVM) użyjesz
ViewModelProvider
bez niestandardowej fabryki, otrzymaszUnsupportedOperationException
. Na platformach JVM zgodność jest zachowywana dzięki użyciu nieargumentowego konstruktora ViewModel, jeśli nie podano niestandardowej fabryki. - Parametr
viewModelScope
zwraca wartośćEmptyCoroutineContext
w przypadku platform, na których interfejsDispatchers.Main
jest niedostępny (np. Linux).
Zmiany w działaniu
InitializerViewModelFactory
(w tym funkcja konstruktoraviewModelFactory
) będzie teraz zwracać błądIllegalArgumentException
, jeśli zostało już dodaneinitializer
z tym samym identyfikatoremclazz: KClass<VM : ViewModel>
. (IC3a36).
Poprawki błędów
ViewModel.getCloseable
obsługuje teraz zduplikowane klucze: jeśli z zasobemkey
jest już powiązany zasóbAutoCloseable
, stary zasób zostanie natychmiast zastąpiony i zamknięty. (Ibeb67)- Dostęp do elementu
viewModelScope
elementuViewModel
jest teraz bezpieczny dla wątków. (If4766, b/322407038)
Treści tłumaczone przez użytkowników zewnętrznych
- Usługa
LocalLifecycleOwner
została przeniesiona z interfejsu Compose do trybu cyklu życia środowiska wykonawczego i tworzenia środowiska wykonawczego, dzięki czemu jej pomocnicze interfejsy API oparte na Compose mogą być używane poza interfejsem Compose. Dziękujemy, Jake Wharton, za pomoc. (I6c41b, b/328263448)
Wersja 2.8.0-alpha02
21 lutego 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-alpha02
została zwolniona. Wersja 2.8.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy interfejsy API
dropUnlessResumed
idropUnlessStarted
, które umożliwiają pomijanie kliknięć lub innych zdarzeń nawet po spadku wartościLifecycleOwner
poniżej wartościLifecycle.State
. Tego ustawienia można na przykład użyć w funkcji Nawigacja, aby uniknąć obsługi zdarzeń kliknięcia po rozpoczęciu przejścia na inny ekran:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Konwersje Kotlin
ViewModel
jest teraz napisany w języku Kotlin (I16f26, b/214568825)- Rozszerzenia kotlin (
lifecycle-viewmodel-ktx
) zostały przeniesione do podstawowego modułu cyklu życia. (Id787b, b/274800183) - Rozszerzenia kotlin (
lifecycle-runtime-ktx
) zostały przeniesione do podstawowego modułu cyklu życia. (Ic3686, b/274800183) - Rozszerzenia kotlin (
lifecycle-livedata-core-ktx
) zostały przeniesione do podstawowego modułu cyklu życia. (I54a3d, b/274800183)
Zgodność z platformą Kotlin – wieloplatformowa
- Podstawowe interfejsy API cyklu życia w systemach
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
iLifecycleRegistry
są teraz dostarczane w artefaktach zgodnych z platformą wieloplatformową Kotlin. (b/317249252)
Zmiany interfejsu API
- Wywołanie
LifecycleStartEffect
iLifecycleResumeEffect
bez klucza jest teraz błędem zgodnie z tą samą konwencją co interfejs APIDisposableEffect
powielany przez te interfejsy API. (Ib0e0c, b/323518079) ViewModel
używa terazAutoCloseable
zamiastCloseable
. Jest to zmiana zgodna wstecznie. (I27f8e, b/214568825)- Wycofano pole
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
na rzeczLiveData.toPublisher(lifecycleOwner)
. (Iabe29, b/262623005)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy Ivanowi Matkovowi z zespołu Jetbrains za pomoc w przeniesieniu cyklu życia do platformy Kotlin. (aosp/2926690, I0c5ac, If445d)
Wersja 2.8.0-alpha01
24 stycznia 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.8.0-alpha01
została zwolniona. Wersja 2.8.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
ViewModel
obsługuje teraz dodawanie obiektówCloseable
za pomocą metodykey
, która umożliwia ich pobieranie przezgetCloseable()
. (I3cf63).
Wersja 2.7
Wersja 2.7.0
10 stycznia 2024 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0
została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.6.0
TestLifecycleOwner
zawiera teraz funkcję zawieszaniasetCurrentState()
, która zapewnia, że zmiana stanu i wszystkie wywołania zwrotneLifecycleObserver
są wykonywane przed zwróceniem. W szczególności w przeciwieństwie do bezpośredniego ustawienia właściwościcurrentState
nie używa ona właściwościrunBlocking
, dzięki czemu można jej bezpiecznie używać zgodnie ze współrzędną, taką jakrunTest
.- Rozszerzenia
LiveData
funkcjimap
iswitchMap
odzwierciedlają teraz sposób działaniadistinctUntilChanged
– jeśliLiveData
ma ustawioną wartośćvalue
, funkcjamap
/switchMap
zostanie natychmiast wywołana w celu wypełnienia parametruvalue
zwróconego polaLiveData
. Dzięki temu wartość początkowa zostanie ustawiona jako część pierwszej kompozycji (gdy zostanie użyta z parametremobserveAsState()
), ale nie zmieni sposobu obserwacji – aktualizacje wartości ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować wartośćLiveData
. - W tej wersji rozwiązano problem, który powodował, że
SavedStateHandle
nie przywracał prawidłowo niestandardowych klasParcelable
po śmierci i odtworzeniu danych. Z powodu informacji o typach, które są tracone przez platformę Androida, tablice niestandardowych obiektów Parcelable wymagają dodatkowej pracy (ręcznego tworzenia tablicy typu właściwego typu). W dokumentacji elementówget
,getLiveData
igetStateFlow
wyraźnie to ograniczenie jest opisane. - Reguły ProGuard Keep powiązane z usługą
LifecycleObserver
zostały usunięte. Oznacza to, że kod ProGuard, który chce korzystać z interfejsów API w ramach refleksji (np. używa długiej, wycofanej adnotacji@OnLifecycleEvent
), będzie musiał stworzyć własne reguły Keep dla konkretnego przypadku użycia.
Dostrzegalność zdarzeń cyklu życia
- Zamiast korzystać z
LifecycleEventObserver
, możesz teraz obserwować elementFlow
o wartościLifecycle.Event
za pomocą metody rozszerzeniaLifecycle.asFlow()
. - Użytkownicy Jetpack Compose mogą teraz używać
LifecycleEventEffect
do uruchamiania efektów ubocznych Compose opartych naLifecycle.Event
.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Użytkownicy Jetpack Compose mogą używać
LifecycleStartEffect
iLifecycleResumeEffect
do obsługi par zdarzeń – odpowiednio rozpoczęte i wznawiane oraz wstrzymane. Ten interfejs API odzwierciedla ten z tabeliDisposableEffect
i nadaje się do przypadków, gdy zmiana wprowadzona w wyniku wzrostu trzeba cofnąć, a potem ją cofnąć.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Więcej informacji znajdziesz w sekcji Uruchamianie kodu w zdarzeniach cyklu życia.
Dostrzegalność stanu cyklu życia
- Bieżącą wartość
Lifecycle.State
można teraz obserwować za pomocą właściwościLifecycle.currentStateFlow
, która zwraca wartośćStateFlow
, gdzievalue
to bieżąca wartośćLifecycle.State
. - Użytkownicy Jetpack Compose mogą użyć rozszerzenia
Lifecycle.currentStateAsState()
, aby bezpośrednio udostępnićLifecycle.State
jako ComposeState
. Jest to odpowiednik (i krótsza alternatywa) funkcjilifecycle.currentStateFlow.collectAsState()
.
Więcej informacji znajdziesz w artykule Rejestrowanie stanu cyklu życia za pomocą przepływów.
Wersja 2.7.0-rc02
13 grudnia 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0-rc02
została zwolniona. Wersja 2.7.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługa
SavedStateHandle
nie przywracała prawidłowo niestandardowych klasParcelable
po śmierci i odtworzeniu zdarzenia. Z powodu informacji o typach, które są tracone przez platformę Androida, tablice niestandardowych obiektów Parcelable wymagają dodatkowej pracy (ręcznego tworzenia tablicy typu właściwego typu). W dokumentacji elementówget
,getLiveData
igetStateFlow
wyraźnie to ograniczenie jest opisane. (I0B55a)
Wersja 2.7.0-rc01
15 listopada 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0-rc01
została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Mechanizmy
LifecycleStartEffect
iLifecycleResumeEffect
usuwają i ponownie tworzą blok efektu w przypadku zmiany parametruLifecycleOwner
. (IA25c6).
Wersja 2.7.0-beta01
1 listopada 2023 roku
Pakiet androidx.lifecycle:lifecycle-*:2.7.0-beta01
został udostępniony bez zmian. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
- Zwiększenie wersji beta – brak istotnych zmian w tej wersji produkcyjnej.
Wersja 2.7.0-alpha03
18 października 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0-alpha03
została zwolniona. Wersja 2.7.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
lifecycle-runtime-testing
zawiera teraz nowy mechanizm sprawdzania lint, który pozwala uniknąć ustawiania elementuLifecycle.State
obiektuTestLifecycleOwner
przy użyciu polacurrentState
wewnątrz współprogramu. Sprawdzanie licencji obecnie sugeruje zawieszaniesetCurrentState
, co umożliwia ustawienieLifecycle.State
bez blokowania. (Icf728, b/297880630)
Poprawki błędów
- Rozwiązaliśmy problem z funkcją
LiveData.switchMap
, który powodował, że zwrócenie tego samego wystąpieniaLiveData
zarówno podczas pierwszego wywołania, jak i kolejnego wywołania uniemożliwiało dodanie wystąpieniaLiveData
jako źródła. (Ibedcba7)
Wersja 2.7.0-alpha02
6 września 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0-alpha02
została zwolniona. Wersja 2.7.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
TestLifecycleOwner
zawiera teraz funkcję zawieszaniasetCurrentState()
, która umożliwia użytkownikom korzystanie zTestLifecycleOwner
przy użyciu współrzędu, takiego jakrunTest
. (I329de, b/259344129)
Zmiany interfejsu API
- Wszystkie pliki z modułów
lifecycle-livedata-ktx
zostały przeniesione do głównego modułulifecycle-livedata
. (I10c6f, b/274800183)
Zmiany w działaniu
- Rozszerzenia
LiveData.map()
iLiveData.switchMap()
ustawiają teraz wartośćvalue
zwróconego koduLiveData
, jeśli poprzedniLiveData
miał ustawioną wartość. Dzięki temu wynikowe dane LiveData w Jetpack Compose mają prawidłowy stan początkowej kompozycji. (I91d2b, b/269479952) - Urządzenie
addCloseable()
użytkownikaViewModel
zamyka terazCloseable
, jeśliViewModel
otrzymał(a) już połączenie z numeremonCleared()
. (I4712e, b/280294730)
Poprawki błędów
- Z cyklu życia
2.6.2
: naprawiono błąd polegający na tym, że elementSavedStateHandle
nie był prawidłowo przywracany po śmierci procesu w przypadku przywrócenia stanu, wywołanosave()
bez faktycznego zapisania stanu w elemencie nadrzędnymSavedStateRegistry
, po czym stan został przywrócony z powrotem. Poprawia to interakcję międzyrememberSaveable
aNavHost
w narzędziu Nawigacja. (Aosp/2729289).
Wersja 2.7.0-alpha01
26 lipca 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja
Lifecycle.State
jest teraz obserwowalna przez funkcjęLifecycle.currentStateFlow
, która zwracaStateFlow
, gdzievalue
to bieżącyLifecycle.State
. (Ib212d, b/209684871) - Elementy
Lifecycle.Event
można teraz obserwować jakoFlow
za pomocąLifecycle.asFlow().
(If2c0f, b/176311030) - Dodano interfejs API
LifecycleResumeEffect
, który umożliwia uruchamianie reguł tworzeniaSideEffect
na podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_RESUME
iLifecycle.Event.ON_PAUSE
. (I60386, b/235529345) - Dodano interfejs API
LifecycleStartEffect
do uruchamiania elementów typuSideEffect
na podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_START
iLifecycle.Event.ON_STOP
. (I5a8d1, b/235529345) - Dodano interfejs API
LifecycleEventEffect
, który umożliwia uruchamianie funkcji tworzenia wiadomościSideEffect
na podstawie regułyLifecycle.Event
. (IC9794, b/235529345) - Dodano rozszerzenie
Lifecycle.collectAsState()
, aby bezpośrednio udostępniać aplikacjęLifecycle.State
jako UtwórzState
. Jest to odpowiednik (i krótsza alternatywa) funkcjilifecycle.currentStateFlow.collectAsState()
. (I11015, b/235529345)
Poprawki błędów
- Rozszerzenie
LiveData.distinctUntilChanged()
ustawia terazvalue
zwracanych wartościLiveData
, jeśli poprzedniLiveData
ma ustawioną wartość. Nie zmieni to sposobu obserwacji – zaktualizowane wartości ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować wartośćLiveData
zwracaną przez funkcjędistinctUntilChanged()
. (IB482f) - Reguły ProGuard Keep powiązane z usługą
LifecycleObserver
zostały usunięte. Oznacza to, że kod ProGuard, który chce korzystać z interfejsów API przez refleksję, będzie musiał opracować własne reguły Keep dla konkretnego przypadku użycia. (Ia12fd).
Wersja 2.6
Wersja 2.6.2
6 września 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.2
została zwolniona. Wersja 2.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
SavedStateHandle
nie była prawidłowo przywracana po śmierci procesu w przypadku przywrócenia stanu, wywołaniasave()
bez faktycznego zapisania stanu w elemencie nadrzędnymSavedStateRegistry
, a potem stan został przywrócony z powrotem. Poprawia to interakcję międzyrememberSaveable
aNavHost
w narzędziu Nawigacja. (Aosp/2729289).
Wersja 2.6.1
22 marca 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.1
została zwolniona. Wersja 2.6.1 zawiera te zatwierdzenia.
Aktualizacje zależności
lifecycle-viewmodel-savedstate
korzysta teraz z klasy SavedState1.2.1
. (CD7251)- Cykl życia zależy teraz od modułu ProfileInstaller
1.3.0
. (F9D30B)
Wersja 2.6.0
8 marca 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.5.0
LiveData
zawiera teraz nową właściwośćisInitialized
, która wskazuje, czy w elemencieLiveData
była kiedykolwiek ustawiona jawna wartość. Pozwala to rozróżnić funkcjęliveData.value
zwracającąnull
, ponieważ nigdy nie ustawiono żadnej wartości lub jawną wartośćnull
.MediatorLiveData
zawiera teraz konstruktor umożliwiający ustawienie wartości początkowej.- Do wersji
StateFlow
iFlow
wcollectAsStateWithLifecycle()
dodaliśmy nowe rozszerzenie, które zbiera dane z przepływów i reprezentuje jego najnowszą wartość jako stan tworzenia wiadomości z uwzględnieniem cyklu życia. - Metody
Lifecycle.launchWhenX
iLifecycle.whenX
zostały wycofane, ponieważ używanie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do marnowania zasobów. Zaleca się użycieLifecycle.repeatOnLifecycle
. Aby uzyskać więcej informacji na temat jednorazowego zawieszenia pracy, zapoznaj się z tym wyjaśnieniem wyjaśniającym, dlaczego to ustawienie nie jest właściwie bezpieczne. - Konwersja Kotlin – duża liczba klas cyklu życia została przekonwertowana na Kotlin. Wszystkie przekonwertowane klasy zachowują zgodność binarną z poprzednimi wersjami. W przypadku tych klas wprowadzono zmiany w przypadku zajęć napisanych w języku Kotlin, które są niezgodne ze źródłem:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
W tabeli poniżej znajdziesz konwersje źródłowe dla 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ść null metody
onChanged
dla metodyObserver
utworzonej w Kotlin odpowiada teraz wartości zerowej typu ogólnego. Jeśli chcesz, abyObserver.onChanged()
akceptowała typ dopuszczający wartości null, musisz utworzyć instancjęObserver
z typem dopuszczającym wartości null. - Te zajęcia zostały też przekonwertowane na Kotlin, ale pozostają zgodne ze źródłem:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
iProcessLifecycleOwner
Wersja 2.6.0-rc01
22 lutego 2023 roku
Usługa androidx.lifecycle:lifecycle-*:2.6.0-rc01
została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozszerzenie
LiveData.distinctUntilChanged()
ustawia terazvalue
zwracanych wartościLiveData
, jeśli poprzedniLiveData
ma ustawioną wartość. Nie zmieni to sposobu obserwacji – zaktualizowane wartości ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować wartośćLiveData
zwracaną przez funkcjędistinctUntilChanged()
. (IB482f)
Wersja 2.6.0-beta01
8 lutego 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0-beta01
została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Konwersje Kotlin
LifecycleOwner
jest teraz napisany w języku Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w Kotlin – muszą one zastąpić właściwośćlifecycle
, zamiast implementować poprzednią funkcjęgetLifecycle()
. (I75b4b, b/240298691)ViewModelStoreOwner
jest teraz w Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w Kotlin – muszą one zastąpić właściwośćviewModelStore
, zamiast implementować poprzednią funkcjęgetViewModelStore()
. (I86409, b/240298691)- Rozszerzenie Kotlin w systemie
LifecycleOwner
, które zawiera polelifecycleScope
, zostało przeniesione do artefaktulifecycle-common
zlifecycle-runtime-ktx
. (I41d78, b/240298691) - Rozszerzenie Kotlin w systemie
Lifecycle
, które zawiera polecoroutineScope
, zostało przeniesione do artefaktulifecycle-common
zlifecycle-runtime-ktx
. (Iabb91, b/240298691)
Wersja 2.6.0-alpha05
25 stycznia 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0-alpha05
została zwolniona. Wersja 2.6.0-alfa05 zawiera te zatwierdzenia.
Konwersje Kotlin
Transformations
jest teraz napisany w języku Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w języku Kotlin, które używały bezpośrednio składni takiej jakTransformations.map
– kod Kotlin musi teraz używać składni metody rozszerzenia Kotlin, która wcześniej była dostępna tylko w przypadku korzystania zlifecycle-livedata-ktx
. W języku programowania Java wersje tych metod, które korzystają z metodyandroidx.arch.core.util.Function
, są wycofywane i zastępowane wersjami, które korzystają z metodyFunction1
Kotlin. Ta zmiana zachowuje zgodność plików binarnych. (I8e14f).ViewTreeViewModelStoreOwner
jest teraz napisany w języku Kotlin. Jest to niekompatybilna zmiana źródła dla klas napisanych w Kotlin. Aby ustawić i znaleźć wcześniej ustawionego właściciela, musisz bezpośrednio zaimportować i użyć metod rozszerzenia Kotlin wView
zandroidx.lifecycle.setViewTreeViewModelStoreOwner
iandroidx.lifecycle.findViewTreeViewModelStoreOwner
. Jest on zgodny z plikami binarnymi i pozostaje kompatybilny ze źródłem dla implementacji napisanych w języku programowania Java. (Ia06d8, Ib22d8, b/240298691)- Interfejs
HasDefaultViewModelProviderFactory
jest teraz napisany w języku Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w Kotlin. Muszą one teraz zastąpić właściwościdefaultViewModelProviderFactory
idefaultViewModelCreationExtras
, zamiast implementować odpowiadające im funkcje. (Iaed9c, b/240298691) Observer
jest teraz napisany w języku Kotlin. MetodaonChanged()
używa teraz nazwyvalue
jako parametru. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
iProcessLifecycleOwner
są teraz napisane w języku Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Wersja 2.6.0-alpha04
11 stycznia 2023 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0-alpha04
została zwolniona. Wersja 2.6.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
LiveData
zawiera teraz nową właściwośćisInitialized
, która wskazuje, czy w elemencieLiveData
była kiedykolwiek ustawiona jawna wartość. Pozwala to rozróżnić funkcjęliveData.value
zwracającąnull
, ponieważ nigdy nie ustawiono żadnej wartości lub jawną wartośćnull
. (IBD018).
Zmiany interfejsu API
- Interfejsy API
collectAsStateWithLifecycle()
wlifecycle-runtime-compose
nie są już w wersji eksperymentalnej. (I09d42, b/258835424) - Metody
Lifecycle.launchWhenX
iLifecycle.whenX
zostały wycofane, ponieważ używanie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do marnowania zasobów. Zaleca się użycieLifecycle.repeatOnLifecycle
. (Iafc54, b/248302832)
Konwersje Kotlin
ViewTreeLifecycleOwner
jest teraz napisany w języku Kotlin. Jest to niekompatybilna zmiana źródła dla klas napisanych w Kotlin. Aby ustawić i znaleźć wcześniej ustawionego właściciela, musisz bezpośrednio zaimportować i użyć metod rozszerzenia Kotlin wView
zandroidx.lifecycle.setViewTreeLifecycleOwner
iandroidx.lifecycle.findViewTreeLifecycleOwner
. Zastępuje to poprzednie rozszerzenie Kotlin wlifecycle-runtime-ktx
. Jest on zgodny z plikami binarnymi i pozostaje kompatybilny ze źródłem dla implementacji napisanych w języku programowania Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
jest teraz napisany w języku Kotlin. Rozszerzenia Kotlin, które były wcześniej dostępne wlifecycle-reactivestreams-ktx
, zostały przeniesione do modułulifecycle-reactivestreams
i są głównym narzędziem do tworzenia kodu napisanego w języku Kotlin. Jest to niekompatybilna zmiana źródła w przypadku kodu napisanego w Kotlin, jeśli nie korzystasz jeszcze z interfejsów API metody rozszerzenia Kotlin. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
iViewModelStore
są teraz napisane w języku Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59/a238}, I59/238},
Poprawki błędów
SavedStateHandle
nie ulega już awarii z klasąClassCastException
podczas wywoływania klasyget()
z nieprawidłowym typem klasy. (I6ae7c).
Wersja 2.6.0-alpha03
24 października 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alfa03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że ograniczenia między różnymi modułami cyklu życia nie działały zgodnie z oczekiwaniami. (I18d0d, b/249686765)
- Błędy zgłaszane przez interfejs
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
Usługa androidx.lifecycle:lifecycle-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
MediatorLiveData
zawiera teraz konstruktor umożliwiający ustawienie wartości początkowej. (Ib6cc5, b/151244085)
Poprawki błędów
- Artefakty
Lifecycle
zawierają teraz ograniczenia, które zapewniają, że wszystkie współzależne artefakty cyklu życia korzystają z tej samej wersji, automatycznie uaktualniając inne zależności. b/242871265 - Aby zapewnić bezpieczeństwo wątków i kontekst,
FlowLiveData.asFlow()
tworzy terazcallbackFlow
, zamiast używać własnej implementacjiChannel
. (I4a8b2, b/200596935) - Funkcja
asLiveData
wFlowLiveData
zachowuje teraz początkową wartośćStateFlow
podczas tworzenia nowego obiektuLiveData
. (I3f530, b/157380488) - Z cyklu życia
2.5.1
: niestandardowe implementacje kluczaAndroidViewModelFactory
teraz prawidłowo wywołują funkcjęcreate(modelClass)
, gdy używasz konstruktora stanowego zLifecycle
2.4 lub nowszym (I5b315, b/238011621)
Wersja 2.6.0-alpha01
29 czerwca 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Do wersji
StateFlow
iFlow
w wersjicollectAsStateWithLifecycle
dodano nowe rozszerzenie, które pobiera dane z procesów i przedstawia jego najnowszą wartość jako stan tworzenia wiadomości w sposób uwzględniający cykl życia. Przepływ jest rejestrowany, a nowa emisja jest ustawiana na wartość stanu, gdy cykl życia mieści się w zakresie co najmniej określonej wartościLifecycle.State
. Gdy cykl życia spadnie poniżej tej wartości (Lifecycle.State
), zbieranie przepływu zostanie zatrzymane, a wartość stanu nie jest aktualizowana. (I1856e, b/230557927)
Wersja 2.5
Wersja 2.5.1
27 lipca 2022 roku
Usługa androidx.lifecycle:lifecycle-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Niestandardowe implementacje interfejsu
AndroidViewModelFactory
prawidłowo wywołują funkcjęcreate(modelClass)
, gdy używasz stanowego konstruktoraAndroidViewModelFactory
zLifecycle
w wersji 2.4 lub nowszej. (I5b315, b/238011621)
Wersja 2.5.0
29 czerwca 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.4.0
SavedStateHandle
oferuje teraz interfejs APIgetStateFlow()
, który zamiast używaniaLiveData
zwraca interfejs KotlinStateFlow
do monitorowania zmian wartości.Dodatki do tworzenia modelu widoku danych – podczas tworzenia niestandardowego
ViewModelProvider.Factory
nie trzeba już przedłużaćAndroidViewModelFactory
aniAbstractSavedStateViewModelFactory
, aby uzyskać dostęp odpowiednio doApplication
lubSavedStateHandle
. Zamiast tego te pola są udostępniane do każdej podklasyViewModelProvider.Factory
jakoCreationExtras
przez nowe przeciążeniecreate
:create(Class<T>, CreationExtras)
. Te dodatki są dostarczane automatycznie przez Twoją aktywność lub fragment, gdy używasz odpowiednio Aktywności1.5.0
i Fragmentu1.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-viewmodel
udostępnia teraz konsolę DSLviewModelFactory
Kotlin, która umożliwia definiowanieViewModelProvider.Factory
w oparciu o 1 lub więcej inicjatorów lambda, po jednym na każdą klasęViewModel
obsługiwaną przez Twoją własną fabrykę przy użyciuCreationExtras
jako podstawowego ź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-compose
oferuje teraz interfejs APIviewModel()
, który wykorzystuje fabrykę lambdy przy tworzeniu instancjiViewModel
bez konieczności tworzenia niestandardowegoViewModelProvider.Factory
.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
SavedStateHandle Compose Saver Integration – artefakt
lifecycle-viewmodel-compose
zawiera teraz wSavedStateHandle.saveable
nowe, eksperymentalne interfejsy API, które pozwalająrememberSaveable
na podobne działanie obsługiwane przezSavedStateHandle
modelu `ViewModel.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
Dodaliśmy interfejs API
addCloseable()
i nowe przeciążenie konstruktora, które pozwalają na dodanie do obiektuViewModel
co najmniej 1 obiektuCloseable
, który zostanie zamknięty, gdyViewModel
zostanie wyczyszczony, bez konieczności ręcznego wprowadzania zmian w elemencieonCleared()
.Na przykład, aby utworzyć zakres współrzędny, który można wstrzykiwać do modelu widoku danych i kontrolować za pomocą testów, możesz utworzyć
CoroutineScope
z implementacjąCloseable
:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
Którego można następnie użyć w konstruktorze
ViewModel
z zachowaniem tego samego czasu działania co wviewModelScope
: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 wskaźnika
Lifecycle.State
zINITIALIZED
doDESTROYED
zawsze powoduje zgłoszenieIllegalStateException
niezależnie od tego, czyLifecycle
ma dołączonego obserwatora. - Użytkownik
LifecycleRegistry
wyczyści teraz swoich obserwatorów, gdy osiągnie stanDESTROYED
.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-rc02
została zwolniona. Wersja 2.5.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
ViewModelProvider
nie będzie już ulegać awariom podczas łączenia wcześniejszych wersji zależności cyklu życia kompilowania z wersjami 2.5 lub nowszym. (I81a66, b/230454566).
Wersja 2.5.0-rc01
11 maja 2022 roku
Usługa androidx.lifecycle:lifecycle-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
MediatorLiveData.addSource()
wysyła terazNullPointerException
po przekazaniu źródłanull
, zamiast propagować źródłonull
obserwatorom.(Ibd0fb, b/123085232)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przedstawicieli właściwości
SavedStateHandle.saveable
, aby używać nazw właściwości jako kluczy do zachowania stanu w obiekcieSavedStateHandle
(I8bb86, b/225014345)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że zagnieżdżenie jednego elementu
NavHost
w innym elemencieNavHost
w innej dolnej karcie nawigacyjnej prowadziło do wywołaniaIllegalStateException
w przypadku korzystania z kilku tylnych stosów. (I11bd5, b/228865698)
Wersja 2.5.0-alpha06
6 kwietnia 2022 roku
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha06
została zwolniona. Wersja 2.5.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj eksperymentalne przeciążenie
MutableState
doSavedStateHandle.saveable
dla spójności zrememberSaveable
(I38cfe, b/224565154)
Zmiany interfejsu API
- Funkcja
CreationExtras
ma teraz postać abstrakcyjną, a nie zapieczętowaną. (IB8a7a)
Poprawki błędów
- Naprawiliśmy błąd (
IllegalStateException: Already attached to lifecycleOwner
) spowodowany przez regułęSavedStateHandleController
. (I7ea47, b/215406268)
Wersja 2.5.0-alpha05
23 marca 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha05
została zwolniona. Wersja 2.5.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Moduł
lifecycle-viewmodel-compose
udostępnia terazSavedStateHandleSaver
– eksperymentalny interfejs API, który zapewnia prawidłową integrację wartości w tabeliSavedStateHandle
z tym samym stanem zapisanego instancji, którego używarememberSaveable
. (Ia88b7, b/195689777)
Zmiany interfejsu API
- Rozwiązaliśmy problem ze zgodnością z wersjami cyklu życia 2.3 i nowszymi w języku Java. (I52c8a, b/219545060)
Poprawki błędów
SavedStateViewFactory
obsługuje teraz korzystanie zCreationExtras
nawet wtedy, gdy zostało zainicjowane za pomocąSavedStateRegistryOwner
. Jeśli podano dodatki, zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
Wersja 2.5.0-alpha04
9 marca 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha04
została zwolniona. Wersja 2.5.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
SavedStateHandle
oferuje teraz interfejs APIgetStateFlow()
, który zamiast korzystania zLiveData
zwraca interfejs KotlinStateFlow
do monitorowania zmian wartości. (Iad3ab, b/178037961)
Wersja 2.5.0-alpha03
23 lutego 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy interfejs API
addCloseable()
i nowe przeciążenie konstruktora, które pozwalają na dodanie do obiektuViewModel
co najmniej 1 obiektuCloseable
, który zostanie zamknięty, gdyViewModel
zostanie wyczyszczony, co nie będzie wymagać ręcznej pracy wonCleared()
. (I55ea0) lifecycle-viewmodel
udostępnia teraz obiektInitializerViewModelFactory
, który umożliwia dodanie funkcji lambda do obsługi określonych klasViewModel
z użyciemCreationExtras
jako podstawowego źródła danych. (If58fc, b/216687549).lifecycle-viewmodel-compose
udostępnia teraz interfejs APIviewModel()
, który wykorzystuje fabrykę lambdy do utworzenia instancjiViewModel
bez konieczności tworzenia niestandardowegoViewModelProvider.Factory
. (I97fbb, b/216688927)
Zmiany interfejsu API
- Możesz teraz utworzyć
ViewModel
za pomocą usługiCreationExtras
za pomocą usługilifecycle-viewmodel-compose
. (I08887, b/216688927)
Zmiany w działaniu
- Próba przeniesienia obiektu
Lifecycle.State
zINITIALIZED
doDESTROYED
zawsze spowoduje zgłoszenieIllegalStateException
niezależnie od tego, czyLifecycle
ma dołączonego obserwatora. (I7c390, b/177924329) LifecycleRegistry
wyczyści teraz swoich obserwatorów, gdy osiągną stanDESTROYED
. (I4f8dd, b/142925860)
Wersja 2.5.0-alpha02
9 lutego 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
SavedStateHandle
iSavedStateViewModelFactory
zostały przekształcone w Kotlin. Zwiększyło to możliwość wartości null identyfikatorów ogólnych w obu klasach. (Ib6ce2, b/216168263, I9647a, b/177667711)- Parametr funkcji
LiveData
switchMap
może teraz mieć dane wyjściowe dopuszczające wartość null. (I40396, b/132923666) - Rozszerzenia
LiveData
-ktx są teraz oznaczone adnotacjami@CheckResult
, aby wymusić stosowanie wyniku przy wywoływaniu tych funkcji. (Ia0f05, b/207325134)
Zmiany w działaniu
SavedStateHandle
teraz prawidłowo przechowuje wartość defaultValue, gdy określony klucz nie istnieje. (I1c6ce, b/178510877)
Poprawki błędów
- Z cyklu życia
2.4.1
: zaktualizowaliśmylifecycle-process
, aby polegać na uruchamianiu 1.1.1, aby mieć pewność, że poprawki, które uniemożliwiają aplikacjiProcessLifecycleInitializer
wysłanieStartupException
, są domyślnie dostępne. (Ib01df, b/216490724) - Teraz pojawia się poprawiony komunikat o błędzie, gdy niestandardowe klasy
AndroidViewModel
mają parametry w niewłaściwej kolejności i próbują utworzyć obiektViewModel
. (I340f7, b/177667711) - Możesz teraz utworzyć model widoku w
CreationExtras
za pomocąAndroidViewModelFactory
bez konfigurowania aplikacji. (I6ebef, b/217271656)
Wersja 2.5.0-alpha01
26 stycznia 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Dodatki do tworzenia modelu ViewModel
W tej wersji rozpoczynamy budowę ViewModel
. Zamiast sztywnego zestawu podklas klasy ViewModelProvider.Factory
, z których każda dodaje dodatkowe funkcje (umożliwia stosowanie parametru konstruktora Application
w obiekcie AndroidViewModelFactory
, a także umożliwia stosowanie parametru konstruktora SavedStateHandle
za pomocą funkcji SavedStateViewModelFactory
i AbstractSavedStateViewModelFactory
itd.), przechodzimy do świata bezstanowych fabryk opartych na nowej koncepcji – CreationExtras
. (Ia7343, b/188691010, b/188541057)
Po tej zmianie usługa ViewModelProvider
nie wywołuje już bezpośrednich wywołań do poprzedniej metody metody create(Class<T>)
(ViewModelProvider.Factory
). Zamiast tego wywołuje nowe przeciążenie typu 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 elementów CreationExtras
:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: ta sekcjaString
zapewnia dostęp do klucza niestandardowego przekazanego przez CiebieViewModelProvider.get()
.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
zapewnia dostęp do klasyApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
zapewnia dostęp do modeluSavedStateRegistryOwner
, który jest używany do tworzenia tego modelu widoku.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
zapewnia dostęp do modeluViewModelStoreOwner
, który jest używany do tworzenia tego modelu widoku.SavedStateHandleSupport.DEFAULT_ARGS_KEY
zapewnia dostęp doBundle
argumentów, których należy użyć do skonstruowaniaSavedStateHandle
.
Te dodatki są udostępniane domyślnie, gdy używasz opcji Aktywność 1.5.0-alpha01
, Fragment 1.5.0-alpha01
i Nawigacja 2.5.0-alpha01
. Jeśli używasz wcześniejszej wersji tych bibliotek, Twoja CreationExtras
będzie pusta – wszystkie istniejące podklasy obiektu ViewModelProvider.Factory
zostały przepisane, aby obsługiwać zarówno starszą ścieżkę tworzenia używaną przez wcześniejsze wersje tych bibliotek, jak i ścieżkę CreationExtras
, która będzie używana w przyszłości.
Te CreationExtras
umożliwiają utworzenie klasy ViewModelProvider.Factory
, która przekazuje do każdego typu ViewModel
tylko te informacje, których potrzebujesz, bez korzystania ze ścisłej hierarchii podklas fabryki:
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()
Kotlin w obiekcie CreationExtras
z SavedStateHandleSupport
, aby utworzyć SavedStateHandle
tylko dla jednego modelu widoku, który go potrzebuje. (Ia6654, b/188541057)
Niestandardowy CreationExtras
można udostępnić, zastępując getDefaultViewModelCreationExtras()
w ComponentActivity
lub Fragment
, dzięki czemu są one dostępne w niestandardowym elemencie ViewModelProvider.Factory
jako wbudowany mechanizm wspomaganego wstrzykiwania. Te dodatki będą automatycznie dostępne w Twojej niestandardowej wersji fabryki, gdy będą używane bezpośrednio za pomocą ViewModelProvider
lub podczas korzystania z rozszerzeń właściwości by viewModels()
i by activityViewModels()
Kotlin. (I79f2b, b/207012584, b/207012585, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że domyślna wartość podana dla obiektu
SavedStateHandle
pojawiała się ponownie po śmierci i odtworzeniu danych w procesie, nawet jeśli została ona specjalnie usunięta z elementuSavedStateHandle
. W związku z tym usługaSavedStateHandle
nie będzie już scalać wartości domyślnych i przywracanych. Zamiast tego jako źródło danych będzie używać przywróconych wartości. (I53a4b)
Wersja 2.4
Wersja 2.4.1
9 lutego 2022 r.
Usługa androidx.lifecycle:lifecycle-*:2.4.1
została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Dane przeniesione z cyklu życia
2.5.0-alpha01
: naprawiliśmy błąd polegający na tym, że wartość domyślna podana dla elementuSavedStateHandle
pojawiała się ponownie po śmierci i odzyskaniu danych w ramach procesu, nawet jeśli została ona specjalnie usunięta zSavedStateHandle
. W związku z tym usługaSavedStateHandle
nie będzie już scalać wartości domyślnych i przywracanych. Zamiast tego jako źródło danych będzie używać przywróconych wartości. (I53a4b) lifecycle-process
działa teraz w oparciu o funkcję Androidx Startup 1.1.1. Rozwiązało to problemy z regresją, w której użycieProcessLifecycleInitializer
powodowało wyświetlenie wynikuStartupException
. (b/216490724)
Wersja 2.4.0
27 października 2021 roku
Usługa androidx.lifecycle:lifecycle-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.3.0
- Interfejs
@OnLifecycleEvent
został wycofany. Zamiast niego należy użyć właściwościLifecycleEventObserver
lubDefaultLifecycleObserver
. - Dodano bibliotekę
androidx.lifecycle:lifecycle-viewmodel-compose
. Udostępnia funkcjeviewModel()
kompozycyjne iLocalViewModelStoreOwner
.- Zmiana źródłowa: kod
ViewModelProvider
został przepisany w Kotlin. MetodaViewModelProvider.Factory.create
nie zezwala już na wartość domyślną do wartości null.
- Zmiana źródłowa: kod
- Do interfejsu
androidx.lifecycle:lifecycle-runtime-ktx
dodano nowy interfejs API coroutines: Lifecycle.repeatOnLifecycle
, interfejs API, który wykonuje blok kodu w korycie, gdy cykl życia jest w co najmniej określonym stanie. Blokada zostanie anulowana i uruchomiona ponownie w miarę przechodzenia cyklu życia do i ze stanu docelowego.Flow.flowWithLifecycle
– interfejs API, który przesyła wartości z przepływu nadrzędnego, gdy cykl życia jest co najmniej w określonym stanie.- Element
DefaultLifecycleObserver
został przeniesiony z folderulifecycle.lifecycle-common-java8
do folderulifecycle.lifecycle-common
.lifecycle.lifecycle-common-java8
nie ma już żadnych dodatkowych funkcji pozalifecycle.lifecycle-common
, więc zależność od tego interfejsu może zostać zastąpiona przezlifecycle.lifecycle-common
. - Interfejs API inny niż coroutines z interfejsu
lifecycle-viewmodel-ktx
został przeniesiony do modułulifecycle-viewmodel
. lifecycle-process
używa terazandroidx.startup
do inicjowaniaProcessLifecycleOwner
.Wcześniej za tę czynność odpowiadał użytkownik
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Jeśli do inicjowania cyklu życia procesu w przeszłości używasz parametru
tools:node="remove"
ContentProvider
, musisz zamiast tego wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Wersja 2.4.0-rc01
29 września 2021 r.
Udostępniliśmy wersję androidx.lifecycle:lifecycle-*:2.4.0-rc01
bez zmian w cyklu życia wersji 2.4.0–beta01. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Wersja 2.4.0-beta01
15 września 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.4.0-beta01
została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Interfejs
@OnLifecycleEvent
został wycofany. Zamiast niego należy użyć właściwościLifecycleEventObserver
lubDefaultLifecycleObserver
. (I5a8fa) - Przeniesiono zasób DefaultLifecycleObserver z
androidx.lifecycle.lifecycle-common-java8
doandroidx.lifecycle.lifecycle-common
. Usługaandroidx.lifecycle.lifecycle-common-java8
nie oferuje już żadnych dodatkowych funkcji poza wersjąandroidx.lifecycle.lifecycle-common
, dlatego zależność od niej może zostać zastąpiona przezandroidx.lifecycle.lifecycle-common
. (I021aa) - Interfejs API spoza coroutines z
lifecycle-viewmodel-ktx
został przeniesiony do modułulifecycle-viewmodel
. (I6d5b2)
Treści tłumaczone przez użytkowników zewnętrznych
Wersja 2.4.0-alpha03
4 sierpnia 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmiana źródłowa: komponent ViewModelProvider został przepisany w Kotlin.
Metoda
ViewModelProvider.Factory.create
nie zezwala już na wartość domyślną do wartości null. (I9B9f6)
Zmiany w działaniu
- Metoda
Lifecycle.repeatOnLifecycle
:block
jest teraz zawsze wywoływana szeregowo podczas ponownego wykonywania. (IBab33),
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy chao2zhang za naprawienie fragmentów kodu w dokumentacji
repeatOnLifecycle
. 205.
Wersja 2.4.0-alpha02
16 czerwca 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- W aplikacji
lifecycle-runtime-ktx
dodano nowy test lintowaniaRepeatOnLifecycleWrongUsage
, który wykrywa, żerepeateOnLifecycle
jest nieprawidłowo używany wonStart()
lubonResume()
. (706078, b/187887400)
Zmiany interfejsu API
- Interfejs API
LifecycleOwner.addRepeatingJob
został usunięty na rzeczLifecycle.repeatOnLifecycle
, która uwzględnia uporządkowaną równoczesność i jest łatwiejsza do ustalenia. (I4a3a8). - Udostępnij plik
ProcessLifecycleInitializer
publicznie, aby inneandroidx.startup.Initializer
mogły używać go jako zależności. (I94c31)
Poprawki błędów
- Rozwiązaliśmy problem ze sprawdzaniem lintowania
NullSafeMutableLiveData
, gdy pole zawierało modyfikatory. (#147, b/183696616) - Rozwiązaliśmy inny problem ze sprawdzaniem lintowania
NullSafeMutableLiveData
w przypadku używania wyrażeń ogólnych. (nr 161, b/184830263)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy firmie maxsav za usprawnienie sprawdzania lintowania
NullSafeMutableLiveData
. (#147, b/183696616) - Dziękujemy kozaxinan za poprawę wyniku
NullSafeMutableLiveData
lintowania. (nr 161, b/184830263)
Wersja 2.4.0-alpha01
24 marca 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
Zmiany w działaniu
lifecycle-process
używa terazandroidx.startup
do inicjowaniaProcessLifecycleOwner
.Wcześniej za tę czynność odpowiadał użytkownik
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Jeśli do inicjowania cyklu życia procesu w przeszłości używasz parametru
tools:node="remove"
ContentProvider
, musisz zamiast tego wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Zmiany interfejsu API
- Dodano interfejs API
Flow.flowWithLifecycle
, który za pomocą interfejsu APILifecycle.repeatOnLifecycle
przesyła wartości z przepływu nadrzędnego, gdy cykl życia jest co najmniej w określonym stanie. Jest to alternatywa dla nowego interfejsu APILifecycleOwner.addRepeatinJob
. (I0f4cd)
Poprawki błędów
- Od cyklu życia 2.3.1: reguła lintowania
NonNullableMutableLiveData
może teraz prawidłowo rozróżniać zmienne pola o różnej wartości null. (b/169249668)
Cykl życia Viewmodel Compose w wersji 1.0.0
Wersja 1.0.0-alpha07
16 czerwca 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.
Zmiana w interfejsie API
viewModel()
przyjmuje teraz opcjonalny elementViewModelStoreOwner
, który ułatwia współpracę z właścicielami innymi niżLocalViewModelStoreOwner
. Możesz na przykład użyć funkcjiviewModel(navBackStackEntry)
, aby pobrać model widoku danych powiązany z konkretnym wykresem nawigacyjnym. (I2628d, b/188693123)
Wersja 1.0.0-alpha06
2 czerwca 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.
Zaktualizowano, aby była zgodna z funkcją Compose w wersji 1.0.0-beta08
.
Wersja 1.0.0-alpha05
18 maja 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano, aby była zgodna z funkcją Compose w wersji
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.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.
Zmiany zależności
- Ta wersja umożliwia
androidx.hilt:hilt-navigation-compose
iandroidx.navigation:navigation-compose
synchronizowanie zależności międzyandroidx.compose.compiler:compiler:1.0.0-beta04
iandroidx.compose.runtime:runtime:1.0.0-beta04
. W wersji 1.0.0 kompilator i środowisko wykonawcze muszą być zgodne.
Wersja 1.0.0-alpha03
10 marca 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
LocalViewModelStoreOwner.current
zwraca terazViewModelStoreOwner
do wartości null, co pozwala lepiej określić, czy w bieżącej kompozycji jest dostępna właściwośćViewModelStoreOwner
. Interfejsy API, które wymagająViewModelStoreOwner
, takie jakviewModel()
iNavHost
, nadal zgłaszają wyjątek, jeśliViewModelStoreOwner
nie jest ustawiony. (Idf39a)
Lifecycle-Viewmodel-Compose w wersji 1.0.0-alfa02,
24 lutego 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
LocalViewModelStoreOwner
ma teraz funkcjeprovides
, których można używać za pomocą funkcjiCompositionLocalProvider
, zastępując interfejs APIasProvidableCompositionLocal()
. (I45d24)
Lifecycle-Viewmodel-Compose w wersji 1.0.0-alfa01,
10 lutego 2021 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Element kompozycyjny
viewModel()
iLocalViewModelStoreOwner
zostały przeniesione zandroidx.compose.ui.viewinterop
do tego artefaktu w pakiecieandroidx.lifecycle.viewmodel.compose
. (I7a374)
Wersja 2.3.1
Wersja 2.3.1 cyklu życia
24 marca 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.1
została zwolniona. Wersja 2.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Reguła lintowania
NonNullableMutableLiveData
może teraz prawidłowo rozróżnić zmienne pola o różnej wartości null. (b/169249668)
Wersja 2.3.0
Wersja 2.3.0
10 lutego 2021 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.2.0
- Obsługa klas nieobjętych papierami wartościowymi w
SavedStateHandle
:SavedStateHandle
obsługuje teraz leniwą serializację, umożliwiając wywołanie funkcjisetSavedStateProvider()
dla danego klucza. Zapewnia to obiektSavedStateProvider
, który otrzyma wywołanie zwrotne dosaveState()
, gdySavedStateHandle
zostanie poproszone o zapisanie stanu. Więcej informacji znajdziesz w artykule Zapisywanie klas niestanowiących się w pakiecie. - Egzekwowanie zachowań w ramach cyklu życia:
- LifecycleRegistry wymusza teraz
DESTROYED
jako stan terminala. LifecycleRegistry
sprawdza teraz, czy jej metody są wywoływane w wątku głównym. Było to wymagane w przypadku cykli życia działań, fragmentów itp. Dodanie obserwatorów w wątkach innych niż główne powodowało trudności w obsłudze awarii w czasie działania. W przypadku obiektówLifecycleRegistry
należących do Twoich komponentów możesz zrezygnować z kontroli przy użyciuLifecycleRegistry.createUnsafe(...)
. Musisz jednak zadbać o prawidłową synchronizację, gdy do obiektuLifecycleRegistry
uzyskiwany jest dostęp z różnych wątków.
- LifecycleRegistry wymusza teraz
- Asystenty stanu cyklu życia i zdarzeń: dodano statyczne metody pomocnicze
downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
doLifecycle.Event
w celu generowania wartościEvent
dla danego parametruState
i kierunku przejścia. Dodano metodęgetTargetState()
zawierającą parametrState
, na który zostanie przeniesiony cykl życia bezpośrednio po metodzieEvent
. withStateAtLeast
: dodano interfejsy APILifecycle.withStateAtLeast
, które oczekują na stan cyklu życia i synchronicznie uruchamiają niezawieszający blok kodu w momencie zmiany stanu, a następnie wznawiają pracę z odpowiednim wynikiem. Te interfejsy API różnią się od istniejących metodwhen*
, ponieważ nie zezwalają na uruchamianie kodu zawieszania ani nie wykorzystują niestandardowego dyspozytora. (Aosp/1326081).- Interfejsy API
ViewTree
: nowe interfejsy APIViewTreeLifecycleOwner.get(View)
iViewTreeViewModelStoreOwner.get(View)
umożliwiają pobranie odpowiednio instancjiLifecycleOwner
iViewModelStoreOwner
w przypadku instancjiView
. Aby to zrobić, musisz uaktualnić wersję Activity1.2.0
i Fragment1.3.0
oraz AppCompat w wersji 1.3.0-alpha01 lub nowszej. Rozszerzenia KotlinfindViewTreeLifecycleOwner
ifindViewTreeViewModelStoreOwner
są dostępne odpowiednio w języku:lifecycle-runtime-ktx
ilifecycle-viewmodel-ktx
. LiveData.observe()
Wycofanie rozszerzenia Kotlin: rozszerzenieLiveData.observe()
Kotlin niezbędne do korzystania ze składni lambda zostało wycofane, ponieważ nie jest konieczne podczas korzystania z narzędzia Kotlin 1.4.
Wersja 2.3.0-rc01
16 grudnia 2020 roku
Usługa androidx.lifecycle:lifecycle-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Metoda
keys()
SavedStateHandle
jest teraz spójna przed zapisaniem stanu i po nim – teraz uwzględnia klucze używane wcześniej przezsetSavedStateProvider()
, a także klucze używane zset()
igetLiveData()
. (Aosp/1517919, b/174713653)
Treści tłumaczone przez użytkowników zewnętrznych
- Interfejsy API do zawieszania współgrających z cyklem życia lepiej obsługują teraz wywołania
yield()
. Dzięki Nicklas Ansman Giertz! (Aosp/1430830, b/168777346)
Wersja 2.3.0-beta01
1 października 2020 roku
Usługa androidx.lifecycle:lifecycle-*:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozszerzenie
LiveData.observe()
Kotlin, które jest wymagane do korzystania ze składni lambda, zostało wycofane, ponieważ nie jest konieczne w przypadku korzystania z Kotlin 1.4. (I40d3f)
Poprawki błędów
- Uaktualnij Androidax, by używał Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Zmiany w dokumentacji
- Kreator
liveData
i dokumentyasLiveData()
zostały zaktualizowane, aby uwzględnić szczegółowe informacje na temat zmiany określonych wartości limitu czasu. (Aosp/1122324).
Wersja 2.3.0-alpha07
19 sierpnia 2020 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha07
została zwolniona. Wersja 2.3.0-alfa07 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię w sprawdzaniu licencji
NullSafeMutableLiveData
. (Aosp/1395367).
Wersja 2.3.0-alfa06
22 lipca 2020 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha06
została zwolniona. Wersja 2.3.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Do
Lifecycle.Event
dodano statyczne metody pomocniczedownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
w celu generowania obiektuEvent
dla danego elementuState
i kierunku przejścia. Dodano metodęgetTargetState()
zawierającą parametrState
, na który zostanie przeniesiony cykl życia bezpośrednio po metodzieEvent
. (I00887). - Dodano interfejsy API
Lifecycle.withStateAtLeast
, które oczekują na stan cyklu życia i synchronicznie uruchamiają niezawieszający blok kodu w punkcie zmiany stanu, a następnie wznawiają pracę z odpowiednim rezultatem. Te interfejsy API różnią się od istniejących metodwhen*
, ponieważ nie zezwalają na uruchamianie kodu zawieszania ani nie wykorzystują niestandardowego dyspozytora. (Aosp/1326081).
Zmiany w działaniu
- LifecycleRegistry wymusza teraz
DESTROYED
jako stan terminala. (I00887). LifecycleRegistry
sprawdza teraz, czy jej metody są wywoływane w wątku głównym. Było to wymagane w przypadku cykli życia działań, fragmentów itp. Dodanie obserwatorów w wątkach innych niż główne powodowało trudności w obsłudze awarii w czasie działania. W przypadku obiektówLifecycleRegistry
należących do Twoich komponentów możesz zrezygnować z kontroli przy użyciuLifecycleRegistry.createUnsafe(...)
. Musisz jednak zadbać o prawidłową synchronizację, gdy dostęp do tego elementuLifecycleRegistry
jest realizowany z różnych wątków (Ie7280, b/137392809)
Poprawki błędów
- Naprawiono awarię w:
NullSafeMutableLiveData
. (b/159987480) - Naprawiono
ObsoleteLintCustomCheck
w przypadku testów Lint zawartych w pakiecie zlifecycle-livedata-core-ktx
(i w szczególnościNullSafeMutableLiveData
). (b/158699265).
Wersja 2.3.0-alpha05
24 czerwca 2020 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alfa05 zawiera te zatwierdzenia.
Poprawki błędów
LiveData
lepiej sprawdza się teraz w przypadku powtarzających się zgłoszeń, dzięki czemu unikniesz podwójnych połączeń z numeramionActive()
ionInactive()
. (b/157840298)- Rozwiązaliśmy problem, który powodował, że w Androidzie Studio 4.1 Canary 6 lub nowszym nie były uruchamiane testy Lint. (Aosp/1331903).
Wersja 2.3.0-alfa04
10 czerwca 2020 r.
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alfa04 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono awarię w sprawdzaniu licencji
NonNullableMutableLiveData
. (b/157294666) - Kontrola licencji
NonNullableMutableLiveData
obejmuje teraz znacznie więcej przypadków, w których wartośćnull
została ustawiona wMutableLiveData
z parametrem typu niepustego. (B/156002218)
Wersja 2.3.0-alfa03
20 maja 2020 r.
Zwolniono androidx.lifecycle:lifecycle-*:2.3.0-alpha03
. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
SavedStateHandle
obsługuje teraz leniwą serializację, umożliwiając wywołanie metodysetSavedStateProvider()
dla danego klucza. Zapewnia to wywołanieSavedStateProvider
, które otrzyma wywołanie zwrotne dosaveState()
, gdySavedStateHandle
poprosi o zapisanie stanu. (B/155106862)- Nowy interfejs API
ViewTreeViewModelStoreOwner.get(View)
umożliwia pobranie konteneraViewModelStoreOwner
zawierającego dane z instancjiView
. Aby to zrobić, musisz uaktualnić do wersji Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
i AppCompat1.3.0-alpha01
. Do aplikacjilifecycle-viewmodel-ktx
dodano rozszerzenie KotlinfindViewModelStoreOwner()
. (Aosp/1295522)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że testy licencji
MutableLiveData
opublikowane w cyklu życia2.3.0-alpha01
nie były publikowane wraz z artefaktemlifecycle-livedata-core-ktx
. (b/155323109)
Wersja 2.3.0-alfa02
29 kwietnia 2020 roku
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
SavedStateViewModelFactory
umożliwia teraz przekazywanie do konstruktora wartości nullApplication
, co ułatwia obsługę zgłoszeń, w których nie są one łatwo dostępne i nie jest potrzebna obsługaAndroidViewModel
. (Aosp/1285740)
Poprawki błędów
- Zwiększona wydajność uruchamiania „na zimno” dzięki unikaniu niepowodzenia weryfikacji klasy na urządzeniach z interfejsem API w wersji 28 i starszych. (Aosp/1282118).
Wersja 2.3.0-alfa01
Marzec 4, 2020
Usługa androidx.lifecycle:lifecycle-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy interfejs API
ViewTreeLifecycleOwner.get(View)
umożliwia pobranie konteneraLifecycleOwner
zawierającego dane z instancjiView
. Aby to zrobić, musisz uaktualnić Aktywność1.2.0-alpha01
i Fragment1.3.0-alpha01
. Rozszerzenie KotlinfindViewTreeLifecycleOwner
jest dostępne w języku:lifecycle-runtime-ktx
. (aosp/1182361, aosp/1182956) - Dodaliśmy nowe sprawdzanie lint, które ostrzegają przed ustawianiem wartości
null
dla elementuMutableLiveData
, który został zdefiniowany w Kotlin jako niepusty. Jest to dostępne, gdy używasz artefaktówlivedata-core-ktx
lublivedata-ktx
. (aosp/1154723, aosp/1159092) - Dostępny jest nowy artefakt
lifecycle-runtime-testing
, który udostępnia komponentTestLifecycleOwner
, który implementujeLifecycleOwner
i oferuje zmiennąLifecycle
bezpieczną w wątku. (Aosp/1242438).
Poprawki błędów.
- Artefakt
lifecycle-runtime
ma teraz unikalną nazwę pakietu. (Aosp/1187196).
Wersja 2.2.0
ViewModel-Savedstate w wersji 2.2.0
5 lutego 2020 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Model widoku cyklu życia SavedState korzysta teraz z tej samej wersji co inne artefakty cyklu życia. Działanie funkcji 2.2.0
jest takie samo jak działanie 1.0.0
.
Wersja 2.2.0
Styczeń 22, 2020
Usługa androidx.lifecycle:lifecycle-*:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.1.0
- Integracja z cyklem życia Coroutine: nowy artefakt
lifecycle-runtime-ktx
dodaje integrację między współrzędnymi cyklu życia i kotlinami Kotlin.lifecycle-livedata-ktx
umożliwia teraz korzystanie z współrzędnych. Więcej informacji znajdziesz w artykule o używaniu współrzędnych Kotlin z komponentami architektury. - Wycofanie
ViewModelProviders.of()
: wersjaViewModelProviders.of()
została wycofana. Możesz przekazaćFragment
lubFragmentActivity
do nowego konstruktoraViewModelProvider(ViewModelStoreOwner)
, aby uzyskać tę samą funkcjonalność przy użyciu fragmentu1.2.0
. lifecycle-extensions
Wycofanie artefaktu: w związku z powyższym wycofaniemViewModelProviders.of()
ta wersja oznacza wycofanie ostatniego interfejsu API wlifecycle-extensions
i ten artefakt należy uznać za wycofany w całości. Zdecydowanie zalecamy, aby dobrać odpowiednie artefakty cyklu życia, których potrzebujesz (np.lifecycle-service
, jeśli używaszLifecycleService
ilifecycle-process
, jeśli używaszProcessLifecycleOwner
), a nielifecycle-extensions
, ponieważ w przyszłości nie ukaże się2.3.0
w wersjilifecycle-extensions
.- Procesor adnotacji przyrostowych Gradle: procesor adnotacji cyklu życia domyślnie działa przyrostowo.
Jeśli Twoja aplikacja jest napisana w języku Java 8, możesz użyć
DefautLifecycleObserver
, a jeśli jest napisana w języku Java 7, możesz użyćLifecycleEventObserver
.
Wersja 2.2.0-rc03
4 grudnia 2019
Usługa androidx.lifecycle:lifecycle-*:2.2.0-rc03
została zwolniona. Wersja 2.2.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów.
- Rozwiązaliśmy problem, który powodował, że próbkowana wersja
ViewModel
była zapisana wViewModelStore
i wysyłana później z użyciem domyślnych ustawień fabrycznych. - Popraw użycie funkcji
Dispatchers.Main.immediate
w metodzielaunchWhenCreated
i podobnych metodach, aby była ona wywoływana synchronicznie podczas odpowiedniego zdarzenia cyklu życia. (Aosp/1156203).
Treści publikowane przez użytkowników zewnętrznych
- Dziękujemy Andersowi Järlebergowi za wprowadzenie poprawki. (Aosp/1156203).
- Dziękujemy Wsiewołodowi Tołstopitowowi z firmy Jetbrains za sprawdzenie wdrożenia implementacji wbudowanej.
Zmiany zależności
- Rozszerzenia cyklu życia opierają się teraz na fragmencie
1.2.0-rc03
.
Wersja 2.2.0-rc02
7 listopada 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-rc02
została zwolniona. Wersja 2.2.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiliśmy błąd w konfiguracji biblioteki ProGuard, który występował na urządzeniach z interfejsem API w wersji 28 lub nowszej, jeśli docelowy interfejs API jest niższy niż 29. (b/142778206)
Wersja 2.2.0-rc01
23 października 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-rc01
została zwolniona. Wersja 2.2.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów.
- Rozwiązaliśmy problem, który powodował, że z powodu użycia metody
Dispatchers.Main
zamiastDispatchers.Main.immediate
metodylaunchWhenCreated
i powiązane z nią metody uruchamiały się o jedną klatkę później niż powiązana metoda cyklu życia. (Aosp/1145596)
Treści publikowane przez użytkowników zewnętrznych
- Dziękujemy Nicklasowi Ansmanowi za wprowadzenie poprawki. (Aosp/1145596)
Wersja 2.2.0-beta01
9 października 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-beta01
została zwolniona. Wersja 2.2.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiliśmy regresję wprowadzoną w cyklu życia 2.2.0-alfa05 w kolejności:
ProcessLifecycleOwner
iLifecycleOwner
aktywności na urządzeniach z Androidem 10. (Aosp/1128132). - Naprawiliśmy regresję wprowadzoną w cyklu życia
2.2.0-alpha05
, która powodowała wyświetlenie błęduNullPointerException
w przypadku używania wersji2.0.0
lub2.1.0
elementulifecycle-process
. (B/141536990)
Wersja 2.2.0-alpha05
18 września 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-alpha05
została zwolniona. Wersja 2.2.0-alfa05 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiliśmy warunek wyścigu w kreatorze danych aktywnych koguty. b/140249349
Wersja 2.2.0-alfa04
5 września 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
i podstawowa implementacjaliveData
używają terazDispatchers.Main.immediate
zamiastDispatchers.Main
. (b/139740492)
Treści publikowane przez użytkowników zewnętrznych
- Dziękujemy Nicklas Ansman za przejście na
Dispatchers.Main.immediate
. (Aosp/1106073).
Wersja 2.2.0-alfa03
7 sierpnia 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.2.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Implementacje funkcji
ViewModelStoreOwner
mogą teraz opcjonalnie implementować zasadęHasDefaultViewModelProviderFactory
, aby utworzyć domyślną wartośćViewModelProvider.Factory
. Zrobiliśmy to w przypadku aktywności1.1.0-alpha02
, fragmentu1.2.0-alpha02
i nawigacji2.2.0-alpha01
. (Aosp/1092370, b/135716331)
Zmiany interfejsu API
- Usługa
ViewModelProviders.of()
została wycofana. Aby uzyskać tę samą funkcjonalność, możesz przekazaćFragment
lubFragmentActivity
do nowego konstruktoraViewModelProvider(ViewModelStoreOwner)
. (Aosp/1009889).
Wersja 2.2.0-alfa02
2 lipca 2019 r.
Usługa androidx.lifecycle:*:2.2.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Zastąpiono wartość
LiveDataScope.initialValue
wartościąLiveDataScope.latestValue
, która będzie śledzić aktualnie emitowaną wartość blokuliveData
. - Do konstruktora
liveData
dodano nowe przeciążenie, które otrzymuje parametrtimeout
jako typDuration
Wersja 2.2.0-alpha01
7 maja 2019 r.
Usługa androidx.lifecycle:*:2.2.0-alpha01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- W tej wersji dodaliśmy nowe funkcje, które uwzględniają połączenia Kotlin w cyklu życia i LiveData. Szczegółową dokumentację na ten temat znajdziesz tutaj.
ViewModel-SavedState w wersji 1.0.0
Wersja 1.0.0
Styczeń 22, 2020
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.
Ważne funkcje w wersji 1.0.0
- Dodano nową klasę SavedStateHandle. Dzięki niemu Twoje zajęcia w
ViewModel
będą mogły korzystać z zapisanych elementów i w nich współtworzyć. Ten obiekt można odebrać w konstruktorze klasyViewModel
i fabryk domyślnie udostępnianych przez fragmenty kodu. AppCompatActivity wstrzykiujeSavedStateHandle
automatycznie. - Dodano AbstractSavedStateViewModelFactory. Umożliwia tworzenie fabryk niestandardowych na urządzeniu
ViewModel
i przyznawanie im dostępu do usługiSavedStateHandle
.
ViewModel-Savedstate w wersji 1.0.0-rc03
4 grudnia 2019
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
została zwolniona. Wersja 1.0.0-rc03 zawiera te zatwierdzenia.
Zmiany zależności
- Wartość SavedState modelu cyklu życia zależy teraz od cyklu życia
2.2.0-rc03
.
Viewmodel-Savedstate, wersja 1.0.0-rc02
7 listopada 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
została zwolniona. 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.
Pakiet androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
został zwolniony bez zmian w stosunku do wersji 1.0.0-beta01
. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
ViewModel-Savedstate, wersja 1.0.0-beta01
9 października 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów.
- Rozwiązaliśmy problem, który powodował, że pierwszy dostęp do modelu widoku SavedState w interfejsie
Activity.onActivityResult()
prowadził doIllegalStateException
. (B/139093676) - Naprawiono błąd
IllegalStateException
w przypadku użycia funkcjiAbstractSavedStateViewModelFactory
. (b/141225984)
ViewModel-SavedState w wersji 1.0.0-alfa05
18 września 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
SavedStateViewModelFactory
nie obejmuje już modeluAbstractSavedStateViewModelFactory
iSavedStateHandle
jest tworzony tylko dla modeli widoków, które go zażądały (aosp/1113593)
ViewModel-SavedState w wersji 1.0.0-alfa03
7 sierpnia 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany najważniejsze
lifecycle-viewmodel-savedstate
nie jest już zależny odfragment
, a powiązane konstruktorySavedStateViewModelFactory(Fragment)
iSavedStateViewModelFactory(FragmentActivity)
zostały usunięte. Zamiast tego domyślnym ustawieniem fabrycznym dla aktywności1.1.0-alpha02
, fragmentu1.2.0-alpha02
i nawigacji2.2.0-alpha01
jestSavedStateViewModelFactory
. (b/135716331)
ViewModel-SavedState w wersji 1.0.0-alfa02
2 lipca 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Dodano przeciążenie
SavedStateHandle.getLiveData()
, które akceptuje wartość domyślną.
Zmiany interfejsu API
- Nazwa
SavedStateVMFactory
została zmieniona naSavedStateViewModelFactory
. - Nazwa
AbstractSavedStateVMFactory
została zmieniona naAbstractSavedStateViewModelFactory
.
ViewModel-Savedstate, wersja 1.0.0-alfa01
13 marca 2019 r.
Usługa androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
została zwolniona. Pełny dziennik zatwierdzenia tej pierwszej wersji znajdziesz tutaj.
Nowe funkcje
- Teraz
ViewModels
może współtworzyć zapisać stan. Aby to zrobić, użyj nowo wprowadzonej fabrykiSavedStateVMFactory
modelu widoku, a model ViewModel powinien mieć konstruktor, który odbiera obiektSavedStateHandle
jako parametr.
Wersja 2.1.0
Ważne zmiany wprowadzone od wersji 2.0.0
- Dodano
LifecycleEventObserver
dla przypadków, gdy potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API, a nie ukryta klasaGenericLifecycleObserver
. - Dodano rozszerzenia ktx w przypadku metod
LiveData.observe
iTransformations.*
metod. - Dodano funkcję
Transformations.distinctUntilChanged
, która tworzy nowy obiekt LiveData, który nie emituje wartości, dopóki wartość źródłaLiveData
nie zostanie zmieniona. - Dodano obsługę współrzędnych w modelach ViewModel przez dodanie właściwości rozszerzenia
ViewModel.viewModelScope
.
Wersja 2.1.0
5 września 2019 r.
Usługa androidx.lifecycle:lifecycle-*:2.1.0
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-rc01
2 lipca 2019 r.
Pakiet androidx.lifecycle:*:2.1.0-rc01
został zwolniony bez zmian w stosunku do wersji androidx.lifecycle:*:2.1.0-beta01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-beta01
7 maja 2019 r.
Usługa androidx.lifecycle:*:2.1.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Cykle życia są obecnie w wersji beta: interfejs API wprowadzony w poprzednich wersjach alfa, w tym funkcje rozszerzeń
liveData
na potrzeby przekształceń i obserwacji, inicjowanieViewModel
z przekazywaniem usługi i inne, utrzymują się i nie ulegną zmianie.
Wersja 2.1.0-alfa04
3 kwietnia 2019 r.
Usługa androidx.lifecycle:*:2.1.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Ważna zmiana: bazowy interfejs API, z którego korzystają
by viewModels()
iby activityViewModels()
, został zmieniony tak, aby obsługiwał bezpośrednioViewModelStore
, a nie tylkoViewModelStoreOwner
. (Aosp/932932)
Wersja 2.1.0-alfa03
13 marca 2019 r.
Usługa androidx.lifecycle:*:2.1.0-alpha03
została zwolniona. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Pole „
ViewModelProvider.KeyedFactory
” zostało usunięte. Drugi interfejs opróczViewModelProvider.Factory
nie działał dobrze, ponieważ pojawiły się nowe funkcje, takie jak przekazywanie właściwości w Kotlinby viewmodels {}
. (Aosp/914133)
Wersja 2.1.0-alfa02
30 stycznia 2019 r.
Usługa androidx.lifecycle 2.1.0-alpha02
została zwolniona.
Zmiany interfejsu API
LifecycleRegistry
zawiera teraz metodęsetCurrentState()
, która zastępuje wycofaną metodęsetState()
. (Aosp/880715)
Poprawki błędów.
- Naprawiono błąd, który powodował awarię przykładowych instancji
ViewModel
, gdy usunięto zawierającą dyrektywęViewModelStore
. b/122273087
Wersja 2.1.0-alpha01
17 grudnia 2018 r.
Usługa androidx.lifecycle 2.1.0-alpha01
została zwolniona.
Nowe funkcje
- Dodano
LifecycleEventObserver
dla przypadków, gdy potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API zamiast ukrytej klasyGenericLifecycleObserver
. - Dodano rozszerzenia ktx w przypadku metod
LiveData.observe
iTransformations.*
metod. - Dodano metodę
Transformations.distinctUntilChanged
. Tworzy nowy obiektLiveData
, który nie emituje wartości, dopóki źródłowa wartość LiveData nie zostanie zmieniona. - Obsługa Corutyny w modelach ViewModels: dodano właściwość rozszerzenia
ViewModel.viewModelScope
. - Dodano
ViewModelProvider.KeyedFactory
, fabrykę dla modeli ViewModel, która odbierakey
iClass
w metodziecreate
.
Wersja 2.0.0
Wersja 2.0.0
21 września 2018 r.
Udostępniono cykl życia 2.0.0
z 1 poprawką błędu z modelu 2.0.0-rc01
w modelu ViewModel.
Poprawki błędów
- Naprawiono regułę Propagarda 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łę LifecycleObserver ProGuard, aby zachowywać tylko implementacje, a nie podinterfejsy b/71389427
- Poprawiono reguły ProGuard usługi ViewModel umożliwiające zaciemnianie i zmniejszanie
Wersje starsze niż AndroidX
W przypadku wersji cyklu życia starszych niż Android X 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 mała zmiana: element android.arch.core.util.Function
został przeniesiony z arch:runtime
do arch:common
. Dzięki temu może być używana bez zależności środowiska wykonawczego, np. w paging:common
poniżej.
lifecycle:common
to zależność typu lifecycle:runtime
, więc ta zmiana nie wpływa bezpośrednio na lifecycle:runtime
, a tylko na moduły zależne bezpośrednio od lifecycle:common
, podobnie jak ma to miejsce w przypadku stronicowania.
Wersja 1.1.0
22 stycznia 2018 r.
Zmiany opakowania
Dostępne są teraz nowe, znacznie mniejsze zależności:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Zmiany interfejsu API
- Wycofane
LifecycleActivity
iLifecycleFragment
zostały usunięte – skorzystaj zFragmentActivity
,AppCompatActivity
lub wejdź naFragment
. - Dodano adnotacje (
@NonNull
) do folderówViewModelProviders
iViewModelStores
- Konstruktor
ViewModelProviders
został wycofany – użyj jego metod statycznych bezpośrednio - Usługa
ViewModelProviders.DefaultFactory
została wycofana – używaj wersjiViewModelProvider.AndroidViewModelFactory
- Dodaliśmy statyczną metodę
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
, aby pobierać statyczne metodyFactory
odpowiednie do tworzenia instancjiViewModel
iAndroidViewModel
.