Cykl życia
Ta tabela zawiera listę wszystkich artefaktów w grupie androidx.lifecycle
.
Artefakt | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
cykl życia* | 2.7.0 | - | 2.8.0-beta01 | - |
cykl życia-widok-modelu-tworzenie | 2.7.0 | - | 2.8.0-beta01 | - |
Deklarowanie zależności
Aby dodać zależność od 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
Odlotowy
dependencies { def lifecycle_version = "2.7.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // 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.7.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // 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
Odlotowy
dependencies { def lifecycle_version = "2.7.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.7.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.8
Wersja 2.8.0-beta01
17 kwietnia 2024 r.
Aplikacja 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. Jej kod jest przenoszony na platformęcommon
i wysyłany artefakt Androida. Odpowiada to obsłudze wieloplatformowejandroidx.compose
. (If7a71, I4f4a0, b/331769623)
Wersja 2.8.0-alfa04
3 kwietnia 2024 r.
Aplikacja 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. Jej kod jest przenoszony na platformęcommon
i wysyłany artefakt Androida. Odpowiada to obsłudze wieloplatformowejandroidx.compose
. W związku z tą zmianą metoda kompozycyjnaviewModel
akceptuje terazKClass
oprócz elementujava.lang.Class
. (b/330323282)
Poprawki błędów
- Przeprowadzono refaktoryzację parametru
NullSafeMutableLiveData
, aby uniknąć wielu wyników fałszywie pozytywnych. (I2d8c1, Iafb18, I03463, I7ecef)
Aktualizacja zależności
- Artefakt
lifecycle-viewmodel-compose
korzysta teraz z funkcji Utwórz w wersji 1.6.0. - Cykl życia zależy teraz od wersji instalatora profilu w wersji 1.3.1.
Wersja 2.8.0-alfa03
20 marca 2024 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha03
została zwolniona. Wersja 2.8.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
ViewModel.viewModelScope
jest teraz zastępowanym parametrem konstruktora, który umożliwia wstrzykiwanie własnego dyspozytora iSupervisorJob()
lub zastąpienie wartości domyślnej za pomocąbackgroundScope
dostępnego wrunTest
. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Zgodność z Kotlin na wielu platformach
Artefakt i interfejsy API lifecycle-viewmodel
, takie jak ViewModel
, ViewModelStore
, ViewModelStoreOwner
i ViewModelProvider
, są teraz wysyłane w postaci artefaktów zgodnych z wieloplatformową platformą Kotlin. (b/214568825)
Aby dostosować się do tej zmiany, metody takie jak te w ViewModelProvider
, które korzystały z metody java.lang.Class<T>
, mają teraz równoważną metodę, która wymaga metody kotlin.reflect.KClass<T>
.
Zgodność plików binarnych na Androidzie została utrzymana, ale porównanie platformy Android API ze wspólną platformą API wprowadziło kilka istotnych zmian:
- Konstruowanie instancji
ViewModelProvider
odbywa się teraz przy użyciu metodViewModelProvider.create()
, a nie bezpośrednie wywoływanie jej konstruktora. - Aplikacje
ViewModelProvider.NewInstanceFactory
iViewModelProvider.AndroidViewModelFactory
są dostępne tylko na Androidzie.- Zalecamy, aby dodawać własne fabryki do zakresu
ViewModelProvider.Factory
i używać metodycreate
, która korzysta z odbiornikaCreationExtras
lub DSLviewModelFactory
Kotlin.
- Zalecamy, aby dodawać własne fabryki do zakresu
- Użycie polecenia
ViewModelProvider
bez niestandardowej fabryki na platformach innych niż JVM będzie skutkować pojawieniem sięUnsupportedOperationException
. Na platformach JVM zgodność jest zachowywana przy użyciu konstruktora ViewModel no-args, jeśli nie określono niestandardowej fabryki. - Na platformach, na których
Dispatchers.Main
jest niedostępny,viewModelScope
użyje wartościEmptyCoroutineContext
(np. Linux).
Zmiany w działaniu
- Funkcja
InitializerViewModelFactory
(w tym funkcja kreatoraviewModelFactory
) będzie teraz zwracać błądIllegalArgumentException
, jeśli został już dodany elementinitializer
z wartościąclazz: KClass<VM : ViewModel>
. (Ic3a36)
Poprawki błędów
ViewModel.getCloseable
obsługuje teraz zduplikowane klucze: jeślikey
ma już powiązany zasóbAutoCloseable
, stary zasób zostanie natychmiast zastąpiony i zamknięty. (Ibeb67)- Dostęp do
viewModelScope
elementuViewModel
jest teraz bezpieczny wątkach. (If4766, b/322407038)
Wkład z zewnątrz
- Środowisko wykonawcze
LocalLifecycleOwner
zostało przeniesione z interfejsu Compose do obsługi środowiska wykonawczego cyklu życia, aby można było używać pomocniczych interfejsów API opartych na Compose, aby można było ich używać poza tym interfejsem. Dziękujemy Jake Wharton za przekazanie treści. (I6c41b, b/328263448)
Wersja 2.8.0-alfa02
21 lutego 2024 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha02
została zwolniona. Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano interfejsy API
dropUnlessResumed
idropUnlessStarted
, które umożliwiają pomijanie kliknięć i innych zdarzeń występujących nawet wtedy, gdy wartośćLifecycleOwner
spadnie poniżej określonej wartościLifecycle.State
. Tej opcji można użyć w przypadku tworzenia wiadomości w nawigacji, aby uniknąć obsługi zdarzeń kliknięcia po rozpoczęciu przechodzenia na inny ekran:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Konwersje Kotlin
- Język
ViewModel
jest teraz zapisany 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 Kotlin na wielu platformach
- Podstawowe interfejsy API cyklu życia w systemach
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
iLifecycleRegistry
są teraz dostarczane w artefaktach zgodnych z usługą Kotlin Multiplatform. (b/317249252)
Zmiany w interfejsie API
- Wywoływanie funkcji
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 teraz polaAutoCloseable
zamiastCloseable
. Jest to zmiana zgodna wstecznie. (I27f8e, b/214568825)- Wycofano atrybut
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
na rzecz:LiveData.toPublisher(lifecycleOwner)
. (Iabe29, b/262623005)
Wkład z zewnątrz
- Dziękujemy Ivana Matkova z firmy Jetbrains za pomoc w przekształceniu cyklu życia w Kotlin Multiplatform. (Aosp/2926690, I0c5ac, If445d)
Wersja 2.8.0-alfa01
24 stycznia 2024 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.8.0-alpha01
została zwolniona. Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
ViewModel
umożliwia teraz dodawanie obiektówCloseable
za pomocą atrybutukey
, który umożliwia ich pobieranie za pomocągetCloseable()
. (I3cf63)
Wersja 2.7
Wersja 2.7.0
10 stycznia 2024 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0
została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.6.0
TestLifecycleOwner
zawiera teraz funkcję zawieszaniasetCurrentState()
, która gwarantuje, że zmiana stanu i wszystkie wywołania zwrotneLifecycleObserver
zostaną zakończone przed zwróceniem. W szczególności w odróżnieniu od bezpośredniego ustawienia właściwościcurrentState
nie powoduje użyciarunBlocking
, dzięki czemu można go bezpiecznie używać w koordynacji, takiej jakrunTest
.- Rozszerzenia
LiveData
elementówmap
iswitchMap
odzwierciedlają teraz działanie funkcjidistinctUntilChanged
– jeśliLiveData
ma ustawiony parametrvalue
, funkcjamap
/switchMap
zostanie natychmiast wywołana w celu wypełnienia wartościvalue
zwracanego parametruLiveData
. W ten sposób wartość początkowa zostanie ustawiona jako część pierwszej kompozycji (w przypadku użycia funkcjiobserveAsState()
), ale nie zmieni się działanie obserwacji – aktualizacje ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować wybrany elementLiveData
. - W tej wersji rozwiązano problem, który powodował, że
SavedStateHandle
nie przywracał w prawidłowy sposób niestandardowych klasParcelable
po śmierci i przywróceniu procesu. Ze względu na to, że informacje o typie są niewidoczne przez platformę Androida, tablice niestandardowych interfejsów Parcelable wymagają dodatkowej pracy (ręczne utworzenie tablicy o odpowiednim typie). Dokumentacja wget
,getLiveData
igetStateFlow
wyraźnie określa to ograniczenie. - Reguły przechowywania ProPard powiązane z elementem
LifecycleObserver
zostały usunięte. Oznacza to, że kod Proporarded, który chce korzystać z interfejsów API poprzez odbicie (np. w przypadku użycia już wycofanej adnotacji@OnLifecycleEvent
), będzie musiał opracować własne reguły przechowywania odpowiednie do swojego konkretnego przypadku użycia.
Dostrzegalność zdarzeń cyklu życia
- Zamiast korzystać z metody
LifecycleEventObserver
, możesz teraz obserwowaćFlow
o wartościLifecycle.Event
za pomocą metody rozszerzeniaLifecycle.asFlow()
. - Użytkownicy Jetpack Compose mogą teraz używać narzędzia
LifecycleEventEffect
do uruchamiania efektów ubocznych funkcji Compose w oparciu oLifecycle.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ń – rozpoczęto je odpowiednio, a potem wznowiono. Ten interfejs API odzwierciedla interfejs zDisposableEffect
i jest odpowiedni w przypadkach, w których zmiana wprowadzana w przypadku podwyższania stanu wymaga cofania przy cofaniu zmian.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Więcej informacji znajdziesz w artykule Uruchamianie kodu w zdarzeniach cyklu życia.
Dostrzegalność stanu cyklu życia
- Bieżący stan
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 opcję tworzeniaState
. Jest to odpowiedniklifecycle.currentStateFlow.collectAsState()
(i krótsza alternatywa).
Więcej informacji znajdziesz w artykule Zbieranie informacji o stanie cyklu życia za pomocą przepływów.
Wersja 2.7.0-rc02
13 grudnia 2023 r.
Aplikacja 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 aplikacja
SavedStateHandle
nie przywracała niestandardowych klasParcelable
po śmierci i regeneracji. Ze względu na to, że informacje o typie są niewidoczne przez platformę Androida, tablice niestandardowych interfejsów Parcelable wymagają dodatkowej pracy (ręczne utworzenie tablicy o odpowiednim typie). Dokumentacja wget
,getLiveData
igetStateFlow
wyraźnie określa to ograniczenie. (I0b55a)
Wersja 2.7.0-rc01
15 listopada 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0-rc01
została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
LifecycleStartEffect
iLifecycleResumeEffect
mogą teraz prawidłowo pozbyć się bloku efektu i utworzyć je ponownie, jeśli parametrLifecycleOwner
został zmieniony. (Ia25c6)
Wersja 2.7.0-beta01
1 listopada 2023 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0-beta01
została wydana bez zmian. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
- Błąd wersji beta – bez większych zmian.
Wersja 2.7.0-alfa03
18 października 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha03
została zwolniona. Wersja 2.7.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- W
lifecycle-runtime-testing
można teraz sprawdzać litry, aby nie ustawiaćLifecycle.State
elementuTestLifecycleOwner
przez użycie polacurrentState
w kopercie. Sprawdzanie Lint sugeruje teraz zawieszeniesetCurrentState
, co umożliwia ustawienieLifecycle.State
bez blokowania. (Icf728, b/297880630)
Poprawki błędów
- Rozwiązaliśmy problem z
LiveData.switchMap
, który powodował, że zwrócenie tego samego wystąpieniaLiveData
zarówno przy wstępnym, jak i kolejnym wywołaniu uniemożliwiało dodanie instancjiLiveData
jako źródła. (Ibedcba7)
Wersja 2.7.0-alfa02
6 września 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha02
została zwolniona. Wersja 2.7.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
TestLifecycleOwner
zawiera teraz funkcję zawieszaniasetCurrentState()
, która umożliwia użytkownikom korzystanie z funkcjiTestLifecycleOwner
z poziomu współpracy takiej jakrunTest
. (I329de, b/259344129)
Zmiany w interfejsie 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óconych wartościLiveData
, jeśli poprzednia wartośćLiveData
miała ustawioną wartość. Dzięki temu uzyskane w narzędziu Jetpack Compose dane LiveData mają odpowiedni stan pierwotnej kompozycji. (I91d2b, b/269479952) addCloseable()
użytkownikaViewModel
natychmiast zamykaCloseable
, jeśliViewModel
otrzymał(a) już połączenie zonCleared()
. (I4712e, b/280294730)
Poprawki błędów
- Z Cykl życia
2.6.2
: naprawiliśmy błąd polegający na tym, że po śmierci procesu nie można było poprawnie przywrócić elementuSavedStateHandle
, gdy stan był przywracany, wywoływanosave()
bez zapisywania stanu w elemencie nadrzędnymSavedStateRegistry
, a następnie ponownie przywracano stan. Poprawia to interakcję między aplikacjąrememberSaveable
a elementemNavHost
nawigacji w tworzeniu wiadomości. (Aosp/2729289)
Wersja 2.7.0-alfa01
26 lipca 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja
Lifecycle.State
jest teraz rejestrowana w funkcjiLifecycle.currentStateFlow
, która zwraca wartośćStateFlow
, gdzievalue
to bieżąca wartośćLifecycle.State
. (Ib212d, b/209684871) Lifecycle.Event
można teraz obserwować jakoFlow
zLifecycle.asFlow().
(If2c0f, b/176311030)- Dodano interfejs API
LifecycleResumeEffect
, aby uruchamiać operacje tworzeniaSideEffect
na podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_RESUME
iLifecycle.Event.ON_PAUSE
. (I60386, b/235529345) - Dodano interfejs API
LifecycleStartEffect
, aby uruchamiać operacje tworzeniaSideEffect
na podstawie wywołań zwrotnych zdarzeńLifecycle.Event.ON_START
iLifecycle.Event.ON_STOP
. (I5a8d1, b/235529345) - Dodano interfejs API
LifecycleEventEffect
, aby uruchamiać operacje tworzeniaSideEffect
na podstawieLifecycle.Event
. (Ic9794, b/235529345) - Dodano rozszerzenie
Lifecycle.collectAsState()
, które umożliwia bezpośrednie wyświetlanie obszaru roboczegoLifecycle.State
jako narzędzia UtwórzState
. Jest to odpowiedniklifecycle.currentStateFlow.collectAsState()
(i krótsza alternatywa). (I11015, b/235529345)
Poprawki błędów
- Rozszerzenie
LiveData.distinctUntilChanged()
ustawia teraz wartośćvalue
dla zwróconego elementuLiveData
, jeśli poprzednia wartośćLiveData
ma ustawioną wartość. Nie zmienia to działania obserwacji – zaktualizowane wartości ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwowaćLiveData
zwrócony zdistinctUntilChanged()
. (Ib482f) - Reguły przechowywania ProPard powiązane z elementem
LifecycleObserver
zostały usunięte. Oznacza to, że kod Progarded, który chce korzystać z interfejsów API poprzez odzwierciedlenie, musi stworzyć własne reguły przechowywania odpowiednie do swojego konkretnego przypadku użycia. (Ia12fd).
Wersja 2.6
Wersja 2.6.2
6 września 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.2
została zwolniona. Wersja 2.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że stan
SavedStateHandle
nie był poprawnie przywrócony po śmierci procesu, jeśli stan został przywrócony,save()
został wywołany bez zapisywania stanu w elemencie nadrzędnymSavedStateRegistry
, a następnie ponownie przywrócono stan. Poprawia to interakcję między aplikacjąrememberSaveable
a elementemNavHost
nawigacji w tworzeniu wiadomości. (Aosp/2729289)
Wersja 2.6.1
22 marca 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.1
została zwolniona. Wersja 2.6.1 zawiera te zatwierdzenia.
Aktualizacje zależności
lifecycle-viewmodel-savedstate
zależy teraz od SavedState1.2.1
. (CD7251)- Cykl życia zależy teraz od elementu ProfileInstaller
1.3.0
. (F9d30b)
Wersja 2.6.0
8 marca 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.5.0
- Funkcja
LiveData
zawiera teraz nową właściwośćisInitialized
, która wskazuje, czy w elemencieLiveData
została kiedykolwiek ustawiona jawna wartość. Dzięki temu możesz odróżnićliveData.value
zwracającą wartośćnull
, ponieważ nigdy nie ustawiono żadnej wartości lub jawną wartośćnull
. MediatorLiveData
zawiera teraz konstruktor, który ustawia wartość początkową.- Dodaliśmy nowe rozszerzenie w
StateFlow
iFlow
dla zasobucollectAsStateWithLifecycle()
, które zbiera dane z przepływów i prezentuje jego najnowszą wartość jako Stan tworzenia w sposób uwzględniający cykl życia. - Metody
Lifecycle.launchWhenX
i metodyLifecycle.whenX
zostały wycofane, ponieważ użycie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do zmarnowania zasobów. Zalecamy użycieLifecycle.repeatOnLifecycle
. Więcej informacji o jednorazowym zawieszeniu pracy znajdziesz w tym wyjaśnieniu wyjaśniającym, dlaczego taka sytuacja z założenia jest niebezpieczna. - Konwersja Kotlin – duża liczba klas cyklu życia została przekształcona w kod Kotlin. Wszystkie przekonwertowane klasy zachowują zgodność binarną z poprzednimi wersjami. Te klasy mają niezgodne źródła zmian w zajęciach napisanych w języku Kotlin:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
Tabela poniżej zawiera 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
elementuObserver
utworzonego w Kotlin odpowiada teraz wartości null typu ogólnego. JeśliObserver.onChanged()
ma akceptować typ null, musisz utworzyć instancjęObserver
z typem dopuszczającym wartość null. - Te zajęcia zostały też przekonwertowane na kod 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
Aplikacja 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 teraz wartośćvalue
dla zwróconego elementuLiveData
, jeśli poprzednia wartośćLiveData
ma ustawioną wartość. Nie zmienia to działania obserwacji – zaktualizowane wartości ze źródłaLiveData
będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwowaćLiveData
zwrócony zdistinctUntilChanged()
. (Ib482f)
Wersja 2.6.0-beta01
8 lutego 2023 r.
Aplikacja 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 Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w Kotlin – muszą one zastąpić właściwośćlifecycle
zamiast poprzedniej funkcjigetLifecycle()
. (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 poprzedniej funkcjigetViewModelStore()
. (I86409, b/240298691)- Rozszerzenie Kotlin w
LifecycleOwner
, które dostarcza polelifecycleScope
, zostało przeniesione do artefaktulifecycle-common
z usługilifecycle-runtime-ktx
. (I41d78, b/240298691) - Rozszerzenie Kotlin w
Lifecycle
, które dostarcza polecoroutineScope
, zostało przeniesione do artefaktulifecycle-common
z usługilifecycle-runtime-ktx
. (Iabb91, b/240298691)
Wersja 2.6.0-alfa05
25 stycznia 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha05
została zwolniona. Wersja 2.6.0-alpha05 zawiera te zatwierdzenia.
Konwersje Kotlin
Transformations
jest teraz napisany w Kotlin. Jest to niekompatybilna zmiana źródła w przypadku klas napisanych w Kotlin, które bezpośrednio korzystały ze składni, takiej jakTransformations.map
. Kod Kotlin musi teraz korzystać ze składni metody rozszerzenia Kotlin, która wcześniej była dostępna tylko w przypadku korzystania zlifecycle-livedata-ktx
. Gdy używasz języka programowania Java, wersje tych metod, które stosują metodęandroidx.arch.core.util.Function
, są wycofywane i zastępowane wersjami, które stosująFunction1
Kotlin. Ta zmiana zachowuje zgodność plików binarnych. (I8e14f)ViewTreeViewModelStoreOwner
jest teraz napisany w Kotlin. Jest to niekompatybilna zmiana źródła w przypadku tych klas napisanych w Kotlin. Musisz teraz bezpośrednio zaimportować metody rozszerzenia Kotlin i użyć ich wView
zandroidx.lifecycle.setViewTreeViewModelStoreOwner
orazandroidx.lifecycle.findViewTreeViewModelStoreOwner
, aby ustawić i znaleźć wcześniej ustawionego właściciela. Jest to kod zapewniający zgodność binarną i źródłowy w przypadku implementacji napisanych w języku programowania Java. (Ia06d8, Ib22d8, b/240298691)- Interfejs
HasDefaultViewModelProviderFactory
jest teraz napisany w 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 Kotlin. MetodaonChanged()
używa teraz nazwyvalue
jako parametru. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
iProcessLifecycleOwner
są teraz zapisywane w Kotlinie (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Wersja 2.6.0-alfa04
11 stycznia 2023 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha04
została zwolniona. Wersja 2.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Funkcja
LiveData
zawiera teraz nową właściwośćisInitialized
, która wskazuje, czy w elemencieLiveData
została kiedykolwiek ustawiona jawna wartość. Dzięki temu możesz odróżnićliveData.value
zwracającą wartośćnull
, ponieważ nigdy nie ustawiono żadnej wartości lub jawną wartośćnull
. (Ibd018)
Zmiany w interfejsie API
- Interfejsy API
collectAsStateWithLifecycle()
systemulifecycle-runtime-compose
nie są już w fazie eksperymentalnej. (I09d42, b/258835424) - Metody
Lifecycle.launchWhenX
i metodyLifecycle.whenX
zostały wycofane, ponieważ użycie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do zmarnowania zasobów. Zalecamy użycieLifecycle.repeatOnLifecycle
. (Iafc54, b/248302832)
Konwersje Kotlin
ViewTreeLifecycleOwner
jest teraz napisany w Kotlin. Jest to niekompatybilna zmiana źródła w przypadku tych klas napisanych w Kotlin. Musisz teraz bezpośrednio zaimportować metody rozszerzenia Kotlin i użyć ich wView
zandroidx.lifecycle.setViewTreeLifecycleOwner
orazandroidx.lifecycle.findViewTreeLifecycleOwner
, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje poprzednie rozszerzenie Kotlin wlifecycle-runtime-ktx
. Jest to kod zapewniający zgodność binarną i źródłowy w przypadku implementacji napisanych w języku programowania Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
jest teraz napisany w Kotlin. Rozszerzenia Kotlin, które były dostępne w językulifecycle-reactivestreams-ktx
, zostały przeniesione do modułulifecycle-reactivestreams
i stały się głównym miejscem dla kodu napisanego w Kotlin. Jest to niekompatybilna zmiana źródła w kodzie napisanym w Kotlin, jeśli nie korzystasz jeszcze z interfejsów API metod rozszerzenia Kotlin. (I2b1b9, I95d22, b/240298691)- Zapisy
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
iViewModelStore
piszą teraz w językach: Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23})818/2
Poprawki błędów
SavedStateHandle
nie ulega już awarii, gdy wystąpi błądClassCastException
podczas wywoływania metodyget()
z nieprawidłowym typem klasy. (I6ae7c)
Wersja 2.6.0-alfa03
24 października 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z ograniczeniami występującymi między różnymi modułami cyklu życia, które nie działały zgodnie z oczekiwaniami. (I18d0d, b/249686765)
- Błędy zgłaszane przez
LifecycleRegistry.moveToState()
zawierają teraz bardziej przydatne komunikaty o błędach, które informują deweloperów o komponencie powodującym błąd. (Idf4b2, b/244910446)
Wersja 2.6.0-alfa02
7 września 2022 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
MediatorLiveData
zawiera teraz konstruktor, który ustawia wartość początkową. (Ib6cc5, b/151244085)
Poprawki błędów
- Artefakty
Lifecycle
zawierają teraz ograniczenia, dzięki którym wszystkie międzyzależne artefakty cyklu życia używają tej samej wersji. Po uaktualnieniu inne zależności są automatycznie uaktualniane. b/242871265 - Aby zapewnić bezpieczeństwo wątku i zachować kontekst,
FlowLiveData.asFlow()
tworzy terazcallbackFlow
, zamiast używać własnej implementacjiChannel
. (I4a8b2, b/200596935) - Funkcja
asLiveData
wFlowLiveData
będzie teraz zachowywać początkową wartośćStateFlow
podczas tworzenia nowego obiektuLiveData
. (I3f530, b/157380488) - Z cyklu życia
2.5.1
: niestandardowe implementacjeAndroidViewModelFactory
prawidłowo wywołują funkcjęcreate(modelClass)
podczas korzystania z konstruktora stanowego zLifecycle
w wersji 2.4 lub nowszej (I5b315, b/238011621)
Wersja 2.6.0-alfa01
29 czerwca 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- W sekcjach
StateFlow
iFlow
nacollectAsStateWithLifecycle
dodaliśmy nowe rozszerzenie, które zbiera dane z przepływów i prezentuje jego najnowszą wartość jako Stan tworzenia w sposób uwzględniający cykl życia. Przepływ jest rejestrowany, a nowa emisja jest ustawiana na wartość stanową, gdy cykl życia wynosi co najmniej w określonej wartościLifecycle.State
. Gdy cykl życia spadnie poniżej tej wartościLifecycle.State
, zbieranie przepływu zatrzymuje się, a wartość stanu nie jest aktualizowana. (I1856e, b/230557927)
Wersja 2.5
Wersja 2.5.1
27 lipca 2022 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Niestandardowe implementacje funkcji
AndroidViewModelFactory
prawidłowo wywołują funkcjęcreate(modelClass)
podczas używania stanowego konstruktoraAndroidViewModelFactory
zLifecycle
w wersji 2.4 lub nowszej. (I5b315, b/238011621)
Wersja 2.5.0
29 czerwca 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
Zamiast używać
LiveData
,SavedStateHandle
oferuje teraz interfejs APIgetStateFlow()
, który w celu monitorowania zmian wartości zwraca kotlinStateFlow
.ViewModel CreationExtras – podczas tworzenia niestandardowego modelu
ViewModelProvider.Factory
nie trzeba już przedłużać jego trwania odpowiednioAndroidViewModelFactory
aniAbstractSavedStateViewModelFactory
, aby uzyskać dostęp do obiektuApplication
lubSavedStateHandle
. Zamiast tego te pola są udostępniane do każdej podklasyViewModelProvider.Factory
jakoCreationExtras
z powodu nowego przeciążenia typucreate
:create(Class<T>, CreationExtras)
. Te dodatki są dostarczane automatycznie przez Twoją aktywność lub fragment kodu, 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 łącznik DSLviewModelFactory
Kotlin, który umożliwia zdefiniowanie obiektuViewModelProvider.Factory
za pomocą co najmniej jednego inicjatora lambda – po jednym dla każdej klasyViewModel
obsługiwanej przez niestandardową 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 do utworzenia instancjiViewModel
wykorzystuje fabrykę lambda bez konieczności tworzenia niestandardowego parametruViewModelProvider.Factory
.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
Integracja z Oszczędzaniem danych do obsługi Compose (w języku angielskim) – artefakt
lifecycle-viewmodel-compose
zawiera teraz nowe, eksperymentalne interfejsy API w językuSavedStateHandle.saveable
, które pozwalają na zachowanie podobne dorememberSaveable
wspieranego przezSavedStateHandle
obiektu „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ą dodać doViewModel
co najmniej 1 obiektCloseable
, który zostanie zamknięty po wyczyszczeniuViewModel
bez konieczności ręcznej pracy wonCleared()
.Aby na przykład utworzyć zakres współużytkowania, który możesz wstrzykiwać do obiektu ViewModel i kontrolować go podczas testowania, 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() } }
Następnie można go użyć w konstruktorze
ViewModel
, zachowując taki sam czas życia jakviewModelScope
: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 obiektu
Lifecycle.State
z tabeliINITIALIZED
doDESTROYED
zawsze spowoduje wywołanieIllegalStateException
niezależnie od tego, czyLifecycle
ma dołączonego obserwatora. LifecycleRegistry
usunie teraz swoich obserwatorów, gdy osiągną stanDESTROYED
.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Aplikacja 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 poprzednich wersji zależności cyklu życia kompilować tylko z wersjami 2.5 lub nowszym. (I81a66, b/230454566)
Wersja 2.5.0-rc01
11 maja 2022 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Teraz po przekazaniu źródła
null
funkcjaMediatorLiveData.addSource()
zwraca wynikNullPointerException
, zamiast przekazać je obserwatorom.(Ibd0fb, b/123085232)null
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano delegata właściwości
SavedStateHandle.saveable
do używania nazw właściwości jako kluczy do utrzymywania stanu wSavedStateHandle
(I8bb86, b/225014345)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w przypadku używania kilku stosów wstecznych zagnieżdżenie jednego elementu
NavHost
w innym elemencieNavHost
w dolnej karcie nawigacyjnej innej niż podstawowa prowadziło do sytuacjiIllegalStateException
. (I11bd5, b/228865698)
Wersja 2.5.0-alfa06
6 kwietnia 2022 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha06
została zwolniona. Wersja 2.5.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj eksperymentalne przeciążenie
MutableState
doSavedStateHandle.saveable
, aby zachować zgodność zrememberSaveable
(I38cfe, b/224565154)
Zmiany w interfejsie API
- Element
CreationExtras
jest teraz abstrakcyjny, a nie zamknięty. (Ib8a7a)
Poprawki błędów
- Usunięto błąd
IllegalStateException: Already attached to lifecycleOwner
spowodowany przez zasadęSavedStateHandleController
. (I7ea47, b/215406268)
Wersja 2.5.0-alfa05
23 marca 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha05
została zwolniona. Wersja 2.5.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Moduł
lifecycle-viewmodel-compose
udostępnia terazSavedStateHandleSaver
, eksperymentalny interfejs API, który zapewnia prawidłową integrację wartości w obiekcieSavedStateHandle
z tym samym zapisanym stanem instancji, z którego korzystarememberSaveable
. (Ia88b7, b/195689777)
Zmiany w interfejsie API
- Naprawiono problem ze zgodnością w wersjach cyklu życia 2.3 i nowszych w Javie. (I52c8a, b/219545060)
Poprawki błędów
SavedStateViewFactory
obsługuje teraz użycieCreationExtras
, nawet jeśli zainicjowano go za pomocąSavedStateRegistryOwner
. W przypadku podania dodatków zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
Wersja 2.5.0-alfa04
9 marca 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha04
została zwolniona. Wersja 2.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SavedStateHandle
oferuje teraz interfejs APIgetStateFlow()
, który zwraca kotlinStateFlow
do monitorowania zmian wartości jako alternatywę dla użyciaLiveData
. (Iad3ab, b/178037961)
Wersja 2.5.0-alfa03
23 lutego 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy interfejs API
addCloseable()
i nowe przeciążenie konstruktora, które pozwalają dodać doViewModel
co najmniej 1 obiektCloseable
, który będzie zamknięty po wyczyszczeniuViewModel
bez konieczności ręcznej pracy wonCleared()
. (I55ea0) lifecycle-viewmodel
udostępnia teraz funkcjęInitializerViewModelFactory
, która umożliwia dodanie funkcji lambda do obsługi konkretnych klasViewModel
, w której podstawowym źródłem danych jestCreationExtras
. (If58fc, b/216687549)lifecycle-viewmodel-compose
oferuje teraz interfejs APIviewModel()
, który wykorzystuje fabrykę lambda do utworzenia instancjiViewModel
bez konieczności tworzenia niestandardowego parametruViewModelProvider.Factory
. (I97fbb, b/216688927)
Zmiany w interfejsie API
- Możesz teraz utworzyć
ViewModel
w usłudzeCreationExtras
wlifecycle-viewmodel-compose
. (I08887, b/216688927)
Zmiany w działaniu
- Próba przeniesienia obiektu
Lifecycle.State
z tabeliINITIALIZED
doDESTROYED
zawsze spowoduje wywołanieIllegalStateException
niezależnie od tego, czyLifecycle
ma dołączonego obserwatora. (I7c390, b/177924329) LifecycleRegistry
usunie teraz swoich obserwatorów, gdy osiągną stanDESTROYED
. (I4f8dd, b/142925860)
Wersja 2.5.0-alfa02
9 lutego 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SavedStateHandle
iSavedStateViewModelFactory
zostały przekształcone na Kotlin. Zwiększyło to wartość null w obu klasach. (Ib6ce2, b/216168263, I9647a, b/177667711)- Parametr funkcji
switchMap
LiveData
może teraz mieć dane wyjściowe dopuszczające wartość null. (I40396, b/132923666) - Do rozszerzeń
LiveData
-ktx dodano teraz adnotację@CheckResult
, aby wymuszać stosowanie danego wyniku przy wywoływaniu tych funkcji. (Ia0f05, b/207325134)
Zmiany w działaniu
SavedStateHandle
teraz prawidłowo przechowuje wartość defaultValue, gdy dla określonego klucza nie ma wartości. (I1c6ce, b/178510877)
Poprawki błędów
- Z Cykl życia
2.4.1
: zaktualizowanolifecycle-process
, aby dostosować go do wersji Startup 1.1.1, aby zapewnić, że domyślnie dostępne są poprawki, które uniemożliwiają systemProcessLifecycleInitializer
wysyłanie poleceniaStartupException
. (Ib01df, b/216490724) - Teraz występuje ulepszony komunikat o błędzie występujący, 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
przy użyciuAndroidViewModelFactory
bez konieczności ustawiania aplikacji. (I6ebef, b/217271656)
Wersja 2.5.0-alfa01
26 stycznia 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.
Dodatkowe dodatki do tworzenia modelu ViewModel
Ta wersja przygotowuje podstawowe zmiany do restrukturyzacji ViewModel
. Zamiast sztywnego zestawu podklas funkcji ViewModelProvider.Factory
, z których każda dodaje dodatkowe funkcje (umożliwia korzystanie z parametrów konstruktora Application
przez AndroidViewModelFactory
, umożliwia stosowanie parametrów konstruktora SavedStateHandle
przez SavedStateViewModelFactory
i AbstractSavedStateViewModelFactory
itd.), przenosimy się do świata bezstanowych fabryk opartych na nowej koncepcji CreationExtras
. (Ia7343, b/188691010, b/188541057)
Po tej zmianie ViewModelProvider
nie będzie już wykonywać bezpośrednich wywołań do poprzedniej metody create(Class<T>)
obiektu ViewModelProvider.Factory
. Zamiast tego wywołuje nowe przeciążenie kwotą create
: create(Class<T>, CreationExtras)
. Oznacza to, że każda bezpośrednia implementacja instancji ViewModelProvider.Factory
ma teraz dostęp do każdej z tych nowych elementów typu CreationExtras
:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: tenString
zapewnia dostęp do klucza niestandardowego przekazanego doViewModelProvider.get()
.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
zapewnia dostęp do klasyApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
zapewnia dostęp do obiektuSavedStateRegistryOwner
używanego do tworzenia tego modelu widoku.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
zapewnia dostęp do obiektuViewModelStoreOwner
używanego do tworzenia tego modelu widoku.- Funkcja
SavedStateHandleSupport.DEFAULT_ARGS_KEY
zapewnia dostęp doBundle
argumentów, których należy użyć do utworzenia funkcjiSavedStateHandle
.
Te dodatki są domyślnie udostępniane, gdy korzystasz z 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 ViewModelProvider.Factory
zostały przepisane, aby obsługiwać zarówno starszą wersję ścieżki 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
pozwalają utworzyć ViewModelProvider.Factory
, który przekazuje do każdego elementu ViewModel
tylko potrzebne informacje bez konieczności 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 Kotlin createSavedStateHandle()
w CreationExtras
na SavedStateHandleSupport
, aby utworzyć SavedStateHandle
tylko dla tego modelu widoku, który go potrzebuje. (Ia6654, b/188541057)
Niestandardowy CreationExtras
można udostępnić, zastępując getDefaultViewModelCreationExtras()
w ComponentActivity
lub Fragment
, aby udostępnić je niestandardowemu ViewModelProvider.Factory
jako wbudowaną formę wstrzykiwania. Te dodatki zostaną automatycznie udostępnione w Twojej niestandardowej fabryce, gdy użyjesz ich bezpośrednio w usłudze ViewModelProvider
lub za pomocą rozszerzeń właściwości by viewModels()
i by activityViewModels()
Kotlin. (I79f2b, b/207012584, b/207012585, b/207012490)
Poprawki błędów
- Naprawiono problem, który powodował, że domyślna wartość podana dla obiektu
SavedStateHandle
była ponownie wyświetlana po śmierci i ponownym uruchomieniu obiektu, nawet jeśli została specjalnie usunięta zSavedStateHandle
. W efekcie funkcjaSavedStateHandle
nie będzie już scalać ze sobą wartości domyślnych i przywróconych, a jedynie korzystać z przywróconych wartości jako źródła informacji. (I53a4b)
Wersja 2.4
Wersja 2.4.1
9 lutego 2022 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.4.1
została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto z Cykl życia
2.5.0-alpha01
: naprawiliśmy problem polegający na tym, że domyślna wartość podana dlaSavedStateHandle
była ponownie wyświetlana po śmierci i regeneracji, nawet jeśli została ona usunięta zSavedStateHandle
. W efekcie funkcjaSavedStateHandle
nie będzie już scalać ze sobą wartości domyślnych i przywróconych, a jedynie korzystać z przywróconych wartości jako źródła informacji. (I53a4b) lifecycle-process
zależy teraz od systemu Androidx Startup 1.1.1, który wyeliminował regresję w miejscu, w którym użycieProcessLifecycleInitializer
spowodowałoby wystąpienie błęduStartupException
. (b/216490724)
Wersja 2.4.0
27 października 2021 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
- Interfejs
@OnLifecycleEvent
został wycofany. Zamiast niej należy użyć parametruLifecycleEventObserver
lubDefaultLifecycleObserver
. - Dodano bibliotekę
androidx.lifecycle:lifecycle-viewmodel-compose
. Zawiera funkcje kompozycyjne (viewModel()
) iLocalViewModelStoreOwner
.- Zmiana przełomowa:
ViewModelProvider
został napisany na nowo w Kotlin. MetodaViewModelProvider.Factory.create
nie zezwala już na wartości ogólne z wartością null.
- Zmiana przełomowa:
- Do interfejsu
androidx.lifecycle:lifecycle-runtime-ktx
dodano nowe interfejsy API współprogramów: Lifecycle.repeatOnLifecycle
, interfejs API, który wykonuje blok kodu w koordynacji, gdy cykl życia jest co najmniej w określonym stanie. Blokada zostanie anulowana i uruchomiona ponownie w miarę następowania i zmieniania stanu docelowego.Flow.flowWithLifecycle
, interfejs API, który emituje wartości ze przepływu nadrzędnego, gdy cykl życia ma co najmniej określony stan.- Element
DefaultLifecycleObserver
został przeniesiony zlifecycle.lifecycle-common-java8
dolifecycle.lifecycle-common
.lifecycle.lifecycle-common-java8
nie ma już żadnej dodatkowej funkcji pozalifecycle.lifecycle-common
, więc zależność od niej można zastąpić kodemlifecycle.lifecycle-common
. - Interfejs API innych niż współprogramy został przeniesiony z
lifecycle-viewmodel-ktx
do modułulifecycle-viewmodel
. lifecycle-process
do inicjowaniaProcessLifecycleOwner
używa terazandroidx.startup
.Wcześniej zajmował się tym użytkownik
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Jeśli w przeszłości był używany
tools:node="remove"
ContentProvider
cykl życia procesu używany do inicjowania cyklu życia procesu w przeszłości, musisz wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Wersja 2.4.0-rc01
29 września 2021 r.
androidx.lifecycle:lifecycle-*:2.4.0-rc01
została opublikowana bez zmian w stosunku do 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.
Aplikacja androidx.lifecycle:lifecycle-*:2.4.0-beta01
została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejs
@OnLifecycleEvent
został wycofany. Zamiast niej należy użyć właściwościLifecycleEventObserver
lubDefaultLifecycleObserver
. (I5a8fa) - Przeniesiono funkcję DefaultLifecycleObserver z
androidx.lifecycle.lifecycle-common-java8
doandroidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
nie oferuje już żadnej dodatkowej funkcji pozaandroidx.lifecycle.lifecycle-common
, więc zależność od niej można zastąpić za pomocąandroidx.lifecycle.lifecycle-common
. (I021aa) - Interfejs API innych niż współprogramy został przeniesiony z
lifecycle-viewmodel-ktx
do modułulifecycle-viewmodel
. (I6d5b2)
Wkład z zewnątrz
Wersja 2.4.0-alfa03
4 sierpnia 2021 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmiana przełomowa: obiekt ViewModelProvider został napisany od nowa w Kotlin.
Metoda
ViewModelProvider.Factory.create
nie może już używać wartości ogólnych z wartością null. (I9b9f6)
Zmiany w działaniu
- Procedura
Lifecycle.repeatOnLifecycle
:block
jest teraz zawsze wywoływana szeregowo podczas powtarzania wykonania. (Ibab33)
Wkład z zewnątrz
- Dziękujemy chao2zhang za poprawienie fragmentów kodu w dokumentacji
repeatOnLifecycle
. 205.
Wersja 2.4.0-alfa02
16 czerwca 2021 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Do interfejsu
lifecycle-runtime-ktx
dodano nowy test lintowaniaRepeatOnLifecycleWrongUsage
, który wykrywa, kiedy wonStart()
lubonResume()
jest nieprawidłowo używany protokółrepeateOnLifecycle
. (706078, b/187887400)
Zmiany w interfejsie API
- Interfejs
LifecycleOwner.addRepeatingJob
API został usunięty na rzeczLifecycle.repeatOnLifecycle
, który przestrzega uporządkowanej równoczesności i jest łatwiejszy do zastosowania. (I4a3a8) - Udostępnij plik
ProcessLifecycleInitializer
publicznie, aby inne obiektyandroidx.startup.Initializer
mogły używać ich jako zależności. (I94c31)
Poprawki błędów
- Naprawiono problem ze sprawdzaniem linkowania
NullSafeMutableLiveData
, gdy pole zawiera modyfikatory. (#147, b/183696616) - Rozwiązaliśmy inny problem ze sprawdzaniem lintera
NullSafeMutableLiveData
w przypadku korzystania z treści ogólnych. (#161, b/184830263)
Wkład z zewnątrz
- Dziękujemy maxsav za usprawnienie sprawdzania lint
NullSafeMutableLiveData
. (#147, b/183696616) - Dziękujemy kozaxinan za poprawienie sprawdzania lint
NullSafeMutableLiveData
. (#161, b/184830263)
Wersja 2.4.0-alfa01
24 marca 2021 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.
Zmiany w działaniu
lifecycle-process
do inicjowaniaProcessLifecycleOwner
używa terazandroidx.startup
.Wcześniej zajmował się tym użytkownik
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Jeśli w przeszłości był używany
tools:node="remove"
ContentProvider
cykl życia procesu używany do inicjowania cyklu życia procesu w przeszłości, musisz wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(lub)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Zmiany w interfejsie API
- Dodano interfejs API
Flow.flowWithLifecycle
, który za pomocą interfejsu APILifecycle.repeatOnLifecycle
wysyła wartości ze 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 Cykl życia 2.3.1: reguła lintowania
NonNullableMutableLiveData
może teraz odpowiednio rozróżniać zmienne pól o różnych wartościach null. (b/169249668)
Tworzenie widoku modelu cyklu życia w wersji 1.0.0
Wersja 1.0.0-alfa07
16 czerwca 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Najnowsze zmiany w interfejsie API
viewModel()
przyjmuje teraz opcjonalną właściwośćViewModelStoreOwner
, która ułatwia współpracę z właścicielami innymi niżLocalViewModelStoreOwner
. Możesz na przykład użyć metodyviewModel(navBackStackEntry)
, aby pobrać model ViewModel powiązany z konkretnym wykresem nawigacyjnym. (I2628d, b/188693123)
Wersja 1.0.0-alfa06
2 czerwca 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Zaktualizowano w celu zapewnienia zgodności z opcją tworzenia wiadomości w wersji 1.0.0-beta08
.
Wersja 1.0.0-alfa05
18 maja 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano w celu zapewnienia zgodności z opcją tworzenia wiadomości w wersji
1.0.0-beta07
.
Poprawki błędów
- Pliki AndroidManifest z elementów ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).
Wersja 1.0.0-alfa04
7 kwietnia 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Zmiany zależności
- Ta wersja umożliwia
androidx.hilt:hilt-navigation-compose
iandroidx.navigation:navigation-compose
synchronizowanie zależności odandroidx.compose.compiler:compiler:1.0.0-beta04
iandroidx.compose.runtime:runtime:1.0.0-beta04
. W przypadku wersji 1.0.0 kompilator i środowisko wykonawcze muszą być zgodne.
Wersja 1.0.0-alfa03
10 marca 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LocalViewModelStoreOwner.current
zwraca teraz wartośćViewModelStoreOwner
dopuszczającą wartość null, aby lepiej określić, czy elementViewModelStoreOwner
jest dostępny w bieżącej kompozycji. Interfejsy API, które wymagają żądaniaViewModelStoreOwner
, takie jakviewModel()
iNavHost
, nadal zgłaszają wyjątek, jeśliViewModelStoreOwner
nie jest ustawiony. (Idf39a).
Lifecycle-Viewmodel-Compose Wersja 1.0.0-alfa02
24 lutego 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LocalViewModelStoreOwner
zawiera teraz funkcjeprovides
, których można używać zCompositionLocalProvider
, zastępując interfejs APIasProvidableCompositionLocal()
. (I45d24)
Lifecycle-Viewmodel-Compose Wersja 1.0.0-alfa01
10 lutego 2021 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alpha01 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
Cykl życia, wersja 2.3.1
24 marca 2021 r.
Aplikacja 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óżniać zmienne pól o różnych wartościach null. (b/169249668)
Wersja 2.3.0
Wersja 2.3.0
10 lutego 2021 r.
Aplikacja 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 w
SavedStateHandle
klasach bez możliwości wyeksportowania:SavedStateHandle
obsługuje teraz leniwą serializację, umożliwiając wywołaniesetSavedStateProvider()
dla danego klucza i podanie identyfikatoraSavedStateProvider
, który zwróci wywołanie zwrotne dosaveState()
, gdySavedStateHandle
zostanie poproszona o zapisanie stanu. Więcej informacji znajdziesz w artykule Zapisywanie klas, które nie są obsługiwane przez system. - Egzekwowanie zachowań w cyklu życia:
- LifecycleRegistry wymusza teraz ustawienie
DESTROYED
jako stanu terminala. LifecycleRegistry
sprawdza teraz, czy jej metody są wywoływane w wątku głównym. Zawsze było to wymagane przez cykle życia aktywności, fragmentów itp. Dodanie obserwatorów z innych wątków utrudniało wychwycenie awarii w czasie działania. W przypadku obiektówLifecycleRegistry
należących do Twoich komponentów możesz wyraźnie zrezygnować z sprawdzania za pomocąLifecycleRegistry.createUnsafe(...)
. Musisz jednak zadbać o prawidłową synchronizację, gdy dostęp do tego elementuLifecycleRegistry
uzyskuje się z innych wątków.
- LifecycleRegistry wymusza teraz ustawienie
- Moduły pomocnicze do stanu cyklu życia i zdarzeń: do tabeli
Lifecycle.Event
dodano statyczne metody pomocniczedownFrom(State)
,downTo(State)
,upFrom(State)
iupTo(State)
służące do generowania elementuEvent
o wartościState
i kierunku przejścia. Dodano metodęgetTargetState()
zapewniającą elementState
, do którego cykl życia zostanie przeniesiony bezpośrednio poEvent
. withStateAtLeast
: dodano interfejsy APILifecycle.withStateAtLeast
, które czekają na stan cyklu życia i synchronicznie uruchamiają niezawieszający blok kodu w punkcie zmiany stanu, a następnie wznawiają działanie z wynikiem. Te interfejsy API różnią się od istniejących metodwhen*
, ponieważ nie pozwalają na uruchamianie kodu zawieszającego ani nie wymagają niestandardowego dyspozytora. (Aosp/1326081)- Interfejsy API
ViewTree
: nowe interfejsy APIViewTreeLifecycleOwner.get(View)
iViewTreeViewModelStoreOwner.get(View)
pozwalają pobierać odpowiadające im interfejsyLifecycleOwner
iViewModelStoreOwner
w przypadku wystąpieniaView
. Aby wypełnić to pole, musisz przejść na Aktywność1.2.0
i Fragment1.3.0
oraz na AppCompat w wersji 1.3.0-alpha01 lub nowszej. RozszerzeniafindViewTreeLifecycleOwner
ifindViewTreeViewModelStoreOwner
Kotlin są dostępne odpowiednio wlifecycle-runtime-ktx
ilifecycle-viewmodel-ktx
. - Wycofanie rozszerzenia Kotlin
LiveData.observe()
: rozszerzenieLiveData.observe()
Kotlin niezbędne do korzystania ze składni lambda zostało wycofane, ponieważ nie jest ono wymagane, gdy używasz Kotlin 1.4.
Wersja 2.3.0-rc01
16 grudnia 2020 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Metoda
keys()
obiektuSavedStateHandle
jest teraz spójna przed zapisaniem stanu i po jego zapisaniu – oprócz kluczy używanych wcześniej wset()
igetLiveData()
zawiera teraz klucze używane wcześniej przezsetSavedStateProvider()
. (Aosp/1517919, b/174713653)
Wkład z zewnątrz
- Interfejsy API do zawieszania aplikacji rozpoznających cykl życia lepiej obsługują teraz wywołania metody
yield()
. Dziękuję Nicklas Ansman Giertz. (Aosp/1430830, b/168777346)
Wersja 2.3.0-beta01
1 października 2020 roku
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozszerzenie
LiveData.observe()
Kotlin potrzebne do korzystania ze składni lambda zostało wycofane, ponieważ nie jest konieczne, gdy używasz Kotlin 1.4. (I40d3f)
Poprawki błędów
- Uaktualnij Androidax, aby używać Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Zmiany w dokumentacji
- Kreator
liveData
i dokumentacjaasLiveData()
zostały zaktualizowane, aby zawierały szczegółowe informacje o zmianie podanych wartości limitu czasu. (Aosp/1122324)
Wersja 2.3.0-alfa07
19 sierpnia 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha07
została zwolniona. Wersja 2.3.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd związany z sprawdzaniem lintowania w
NullSafeMutableLiveData
. (Aosp/1395367)
Wersja 2.3.0-alfa06
22 lipca 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha06
została zwolniona. Wersja 2.3.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Do metody
Lifecycle.Event
dodano statyczne metody pomocniczedownFrom(State)
,downTo(State)
,upFrom(State)
iupTo(State)
do generowania wartościEvent
z wartościąState
i kierunkiem przejścia. Dodano metodęgetTargetState()
zapewniającą elementState
, do którego cykl życia zostanie przeniesiony bezpośrednio poEvent
. (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ą działanie z użyciem wyniku. Te interfejsy API różnią się od istniejących metodwhen*
, ponieważ nie pozwalają na uruchamianie kodu zawieszającego ani nie wymagają niestandardowego dyspozytora. (Aosp/1326081)
Zmiany w działaniu
- LifecycleRegistry wymusza teraz ustawienie
DESTROYED
jako stanu terminala. (I00887) LifecycleRegistry
sprawdza teraz, czy jej metody są wywoływane w wątku głównym. Zawsze było to wymagane przez cykle życia aktywności, fragmentów itp. Dodanie obserwatorów z innych wątków utrudniało wychwycenie awarii w czasie działania. W przypadku obiektówLifecycleRegistry
należących do Twoich komponentów możesz wyraźnie zrezygnować z sprawdzania za pomocąLifecycleRegistry.createUnsafe(...)
, ale musisz upewnić się, że działa prawidłowa synchronizacja podczas uzyskiwania dostępu do tego elementuLifecycleRegistry
z różnych wątków (Ie7280, b/137392809)
Poprawki błędów
- Naprawiono awarię w
NullSafeMutableLiveData
. (b/159987480) - Naprawiono błąd
ObsoleteLintCustomCheck
związany z testami Lint zawierającymi błędy w pakiecielifecycle-livedata-core-ktx
(a konkretnieNullSafeMutableLiveData
). (b/158699265)
Wersja 2.3.0-alfa05
24 czerwca 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
LiveData
teraz lepiej obsługuje przypadki ponownej rejestracji, co pozwala uniknąć powtarzania wywołań doonActive()
ionInactive()
. (b/157840298)- Rozwiązaliśmy problem, który powodował, że sprawdzanie Lint nie działało w Androidzie Studio 4.1 w wersji Canary 6 lub nowszej. (Aosp/1331903)
Wersja 2.3.0-alfa04
10 czerwca 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono awarię podczas sprawdzania wiarygodności
NonNullableMutableLiveData
. (b/157294666) - Sprawdzanie pod kątem zgodności z definicją
NonNullableMutableLiveData
obejmuje teraz znacznie więcej przypadków, gdy wMutableLiveData
z parametrem typu niezerowym ustawiono wartośćnull
. (b/156002218)
Wersja 2.3.0-alfa03
20 maja 2020 r.
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
zostało zwolnione. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
SavedStateHandle
obsługuje teraz leniwą serializację, umożliwiając wywołaniesetSavedStateProvider()
dla danego klucza i udostępnienie identyfikatoraSavedStateProvider
, który zwróci wywołanie zwrotne dosaveState()
, gdySavedStateHandle
zostanie poproszona o zapisanie stanu. (b/155106862)- Nowy interfejs API
ViewTreeViewModelStoreOwner.get(View)
pozwala pobrać zawierającyViewModelStoreOwner
z użyciem instancjiView
. Aby je wypełnić, musisz przejść na Aktywność1.2.0-alpha05
, Fragment1.3.0-alpha05
i AppCompat1.3.0-alpha01
. RozszerzeniefindViewModelStoreOwner()
Kotlin zostało dodane do:lifecycle-viewmodel-ktx
. (Aosp/1295522)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że równolegle z artefaktem
lifecycle-livedata-core-ktx
nie były publikowane testy lintaMutableLiveData
opublikowane w ramach cyklu życia2.3.0-alpha01
. (b/155323109)
Wersja 2.3.0-alfa02
29 kwietnia 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SavedStateViewModelFactory
umożliwia teraz przekazywanie wartości nullApplication
do swojego konstruktora, co pozwala na lepszą obsługę przypadków, gdy nie jest łatwo dostępna i obsługaAndroidViewModel
nie jest potrzebna. (Aosp/1285740)
Poprawki błędów
- Zwiększono wydajność uruchamiania „na zimno” przez unikanie błędów weryfikacji klasy na urządzeniach z interfejsem API 28 i niższymi wersjami. (Aosp/1282118)
Wersja 2.3.0-alfa01
4 marca 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy interfejs API
ViewTreeLifecycleOwner.get(View)
pozwala pobrać zawierającyLifecycleOwner
z użyciem instancjiView
. Aby je wypełnić, musisz przejść na Aktywność1.2.0-alpha01
i Fragment1.3.0-alpha01
. RozszerzeniefindViewTreeLifecycleOwner
Kotlin jest dostępne w:lifecycle-runtime-ktx
. (Aosp/1182361, aosp/1182956) - Dodaliśmy nowy test Lint, który ostrzega Cię, gdy ustawiasz wartość
null
w elemencieMutableLiveData
, który został zdefiniowany w Kotlin jako niepusty. Ta funkcja jest dostępna podczas korzystania z artefaktówlivedata-core-ktx
lublivedata-ktx
. (Aosp/1154723, aosp/1159092) - Dostępny jest nowy artefakt
lifecycle-runtime-testing
, który udostępnia interfejsTestLifecycleOwner
, który implementujeLifecycleOwner
i zapewnia zmienną wartośćLifecycle
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.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Obiekt ViewModel cyklu życia ma teraz tę samą wersję co inne artefakty cyklu życia. Działanie 2.2.0
jest takie samo jak działanie 1.0.0
.
Wersja 2.2.0
22 stycznia 2020 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.1.0
- Integracja z koordynacją cyklu życia: nowy artefakt
lifecycle-runtime-ktx
dodaje integrację między funkcjami cyklu życia i współprogramami Kotlin. Rozszerzyliśmy teżlifecycle-livedata-ktx
, by korzystać z korekty. Więcej informacji znajdziesz w artykule Używanie współprogramów Kotlin z komponentami architektury. - Wycofanie funkcji
ViewModelProviders.of()
: interfejsViewModelProviders.of()
został wycofany. Jeśli używasz fragmentu1.2.0
, możesz przekazaćFragment
lubFragmentActivity
do nowego konstruktoraViewModelProvider(ViewModelStoreOwner)
, aby uzyskać te same funkcje. - Wycofanie artefaktów
lifecycle-extensions
: z powodu opisanego powyżej wycofania interfejsuViewModelProviders.of()
ta wersja oznacza wycofanie ostatniego interfejsu API wlifecycle-extensions
. Ten artefakt należy w całości uznać za wycofany. Zdecydowanie zalecamy korzystanie z konkretnych artefaktów cyklu życia, których potrzebujesz (np.lifecycle-service
, jeśli używaszLifecycleService
ilifecycle-process
, jeśli używaszProcessLifecycleOwner
), a nielifecycle-extensions
, ponieważ w przyszłości nie udostępnimy wersjilifecycle-extensions
systemu2.3.0
. - Procesor adnotacji przyrostowych Gradle: procesor adnotacji cyklu życia jest domyślnie przyrostowy.
Jeśli Twoja aplikacja jest napisana w języku programowania Java 8, możesz użyć
DefautLifecycleObserver
, a jeśli jest napisana w języku programowania Java 7, możesz użyćLifecycleEventObserver
.
Wersja 2.2.0-rc03
4 grudnia 2019
Aplikacja androidx.lifecycle:lifecycle-*:2.2.0-rc03
została zwolniona. Wersja 2.2.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że pozorowana
ViewModel
była przechowywana wViewModelStore
, a następnie wykorzystywana w domyślnej fabryce. - Popraw użycie metody
Dispatchers.Main.immediate
w metodzielaunchWhenCreated
i podobnych metod, aby była ona wywoływana synchronicznie w trakcie odpowiedniego zdarzenia cyklu życia. (Aosp/1156203)
Treści tłumaczone z zewnątrz
- Dziękujemy Andersowi Järlebergowi za wprowadzenie poprawki. (Aosp/1156203)
- Dziękujemy Wsiewołodowi Tołstopyatowa z firmy Jetbrains za zapoznanie się z implementacją implementacji wbudowanej.
Zmiany zależności
- Rozszerzenia cyklu życia zależą teraz od fragmentu
1.2.0-rc03
.
Wersja 2.2.0-rc02
7 listopada 2019 r.
Aplikacja 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 ProPard, który dotyczył urządzeń z interfejsem API w wersji 28 lub nowszej, jeśli docelowy interfejs API ma mniej niż 29. (b/142778206)
Wersja 2.2.0-rc01
23 października 2019 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.2.0-rc01
została zwolniona. Wersja 2.2.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że funkcja
launchWhenCreated
i powiązane z nią metody uruchamiały się o jedną klatkę później niż powiązana metoda cyklu życia z powodu użycia metodyDispatchers.Main
zamiastDispatchers.Main.immediate
. (Aosp/1145596)
Treści tłumaczone z zewnątrz
- Dziękujemy Nicklasowi Ansman za przesłanie poprawki. (Aosp/1145596)
Wersja 2.2.0-beta01
9 października 2019 r.
Aplikacja 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 Cykl życia 2.2.0-alpha05 w kolejności
ProcessLifecycleOwner
iLifecycleOwner
aktywności na urządzeniach z Androidem 10. (Aosp/1128132) - Naprawiliśmy regresję wprowadzoną w Cykl życia
2.2.0-alpha05
, która powodowała występowanie błęduNullPointerException
przy korzystaniu z wersji2.0.0
lub2.1.0
wartościlifecycle-process
. (b/141536990)
Wersja 2.2.0-alfa05
18 września 2019 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha05
została zwolniona. Wersja 2.2.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono warunek wyścigu w kreatorze Livedata. b/140249349
Wersja 2.2.0-alfa04
5 września 2019 r.
Aplikacja 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 tłumaczone z zewnątrz
- Dziękujemy Nicklasowi Ansman za przekazanie środków do
Dispatchers.Main.immediate
. (Aosp/1106073)
Wersja 2.2.0-alfa03
7 sierpnia 2019 r.
Aplikacja androidx.lifecycle:lifecycle-*:2.2.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Implementacje interfejsu
ViewModelStoreOwner
mogą teraz opcjonalnie implementować elementHasDefaultViewModelProviderFactory
, który zapewnia domyślny interfejsViewModelProvider.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 w interfejsie API
- Interfejs
ViewModelProviders.of()
został wycofany. Aby uzyskać te same funkcje, możesz przekazać do nowego konstruktoraViewModelProvider(ViewModelStoreOwner)
metodęFragment
lubFragmentActivity
. (Aosp/1009889)
Wersja 2.2.0-alfa02
2 lipca 2019 r.
Aplikacja androidx.lifecycle:*:2.2.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Zastąpiono wartość
LiveDataScope.initialValue
ciągiemLiveDataScope.latestValue
, który będzie śledził bieżącą wyemitowaną wartość blokuliveData
. - Dodano nowe przeciążenie do kreatora
liveData
, który odbiera parametrtimeout
jako typDuration
Wersja 2.2.0-alfa01
7 maja 2019 r.
Aplikacja 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 umożliwiają obsługę współprogramów Kotlin w Lifecycle i LiveData. Szczegółową dokumentację na ten temat znajdziesz tutaj.
ViewModel-SavedState w wersji 1.0.0
Wersja 1.0.0
22 stycznia 2020 r.
Aplikacja 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 temu Twoje zajęcia w
ViewModel
mają dostęp do zapisanego stanu i mogą pomagać w nim. Ten obiekt można odebrać w konstruktorze klasyViewModel
i fabrykach dostarczanych domyślnie przez Fragmenty. AppCompatActivity będzie automatycznie wstrzykiwaćSavedStateHandle
. - Dodano AbstractSavedStateViewModelFactory. Umożliwia tworzenie niestandardowych fabryk dla urządzenia
ViewModel
i zapewnia im dostęp doSavedStateHandle
.
ViewModel-Savedstate w wersji 1.0.0-rc03
4 grudnia 2019
Aplikacja 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 w modelu cyklu życia zależy teraz od
2.2.0-rc03
cyklu życia.
Wersja 1.0.0-rc02 modelu Viewmodel-Savedstate
7 listopada 2019 r.
Aplikacja 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.
Opublikowano androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
bez zmian z 1.0.0-beta01
. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
ViewModel-Savedstate w wersji 1.0.0-beta01
9 października 2019 r.
Aplikacja 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 po raz pierwszy uzyskanie dostępu do modelu ViewModel SavedState w
Activity.onActivityResult()
powodowało uzyskanie wartościIllegalStateException
. (b/139093676) - Naprawiono
IllegalStateException
przy korzystaniu zAbstractSavedStateViewModelFactory
. (b/141225984)
ViewModel-SavedState w wersji 1.0.0-alfa05
18 września 2019 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zakres
SavedStateViewModelFactory
nie obejmuje już zakresuAbstractSavedStateViewModelFactory
, a parametrSavedStateHandle
jest tworzony tylko dla modeli wyświetleń, które zażądały jego udostępnienia (aosp/1113593)
ViewModel-SavedState w wersji 1.0.0-alfa03
7 sierpnia 2019 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Niezbędne zmiany
- Funkcja
lifecycle-viewmodel-savedstate
nie jest już zależna od metodyfragment
, a powiązane z nią konstruktorySavedStateViewModelFactory(Fragment)
iSavedStateViewModelFactory(FragmentActivity)
zostały usunięte. Zamiast tegoSavedStateViewModelFactory
jest teraz domyślną fabryką dla Aktywność1.1.0-alpha02
, Fragment1.2.0-alpha02
i Nawigacja2.2.0-alpha01
. (b/135716331)
ViewModel-SavedState w wersji 1.0.0-alfa02
2 lipca 2019 r.
Aplikacja 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 w interfejsie API
- Nazwa aplikacji
SavedStateVMFactory
została zmieniona naSavedStateViewModelFactory
. - Nazwa aplikacji
AbstractSavedStateVMFactory
została zmieniona naAbstractSavedStateViewModelFactory
.
ViewModel-Savedstate w wersji 1.0.0-alfa01
13 marca 2019 r.
Aplikacja androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
została zwolniona. Pełny dziennik zatwierdzenia tej wstępnej wersji znajdziesz tutaj.
Nowe funkcje
ViewModels
może teraz pomóc w zapisanych stanach. Aby to zrobić, użyj nowo wprowadzonej fabryki modelu widoku danych (SavedStateVMFactory
). Model powinien mieć konstruktor, który otrzymujeSavedStateHandle
obiekt jako parametr.
Wersja 2.1.0
Ważne zmiany od wersji 2.0.0
- Dodano element
LifecycleEventObserver
na potrzeby przypadków, w których potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API, a nie ukryta klasaGenericLifecycleObserver
. - Dodano rozszerzenia ktx dla metod (
LiveData.observe
) i metod (Transformations.*
). - Dodano
Transformations.distinctUntilChanged
, co powoduje utworzenie nowego obiektu LiveData, który nie emituje wartości, dopóki wartość źródłowaLiveData
nie zostanie zmieniona. - Dodano obsługę współużytkowania w modelach widoków danych przez dodanie właściwości rozszerzenia
ViewModel.viewModelScope
.
Wersja 2.1.0
5 września 2019 r.
Aplikacja 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.
Opublikowano androidx.lifecycle:*:2.1.0-rc01
bez zmian z androidx.lifecycle:*:2.1.0-beta01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-beta01
7 maja 2019 r.
Aplikacja androidx.lifecycle:*:2.1.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Cykle życia przeszły do wersji beta: interfejs API wprowadzony w poprzednich wersjach alfa, np. funkcje rozszerzenia
liveData
na potrzeby przekształceń i obserwacji, inicjowanieViewModel
z przekazywaniem właściwości oraz inne funkcje, są ustabilizowane i nie uległy zmianie.
Wersja 2.1.0-alfa04
3 kwietnia 2019 r.
Aplikacja androidx.lifecycle:*:2.1.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Zmiana powodująca niezgodność: podstawowy interfejs API stojący za
by viewModels()
iby activityViewModels()
został zmieniony tak, aby bezpośrednio obsługiwać interfejsViewModelStore
, a nie tylkoViewModelStoreOwner
. (Aosp/932932)
Wersja 2.1.0-alfa03
13 marca 2019 r.
Aplikacja androidx.lifecycle:*:2.1.0-alpha03
została zwolniona. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Pole „
ViewModelProvider.KeyedFactory
” zostało usunięte. Drugi interfejs, opróczViewModelProvider.Factory
, składa się z nowych funkcji, takich jak przekazywanie usług w Kotlinby viewmodels {}
. (Aosp/914133)
Wersja 2.1.0-alfa02
30 stycznia 2019 r.
Aplikacja androidx.lifecycle 2.1.0-alpha02
została zwolniona.
Zmiany w interfejsie API
LifecycleRegistry
zawiera teraz metodęsetCurrentState()
, która zastępuje wycofaną już metodęsetState()
. (Aosp/880715)
Poprawki błędów
- Naprawiono błąd polegający na tym, że po wyczyszczeniu instancji
ViewModelStore
pozorowanie wystąpienia błęduViewModel
powodowało jej awarię. b/122273087
Wersja 2.1.0-alfa01
17 grudnia 2018 r.
Aplikacja androidx.lifecycle 2.1.0-alpha01
została zwolniona.
Nowe funkcje
- Dodano element
LifecycleEventObserver
na potrzeby przypadków, w których potrzebny jest strumień zdarzeń cyklu życia. Jest to publiczny interfejs API, a nie ukryta klasaGenericLifecycleObserver
. - Dodano rozszerzenia ktx dla metod (
LiveData.observe
) i metod (Transformations.*
). - Dodano metodę
Transformations.distinctUntilChanged
. Tworzy nowy obiektLiveData
, który nie emituje wartości, dopóki źródłowa wartość LiveData nie zostanie zmieniona. - Dodano obsługę Korutyny w obiekcie ViewModels: dodano właściwość rozszerzenia
ViewModel.viewModelScope
. - Dodano
ViewModelProvider.KeyedFactory
– fabrykę modeli ViewModel, które odbierająkey
iClass
w metodziecreate
.
Wersja 2.0.0
Wersja 2.0.0
21 września 2018 r.
Cykl życia 2.0.0
został opublikowany z jedną poprawką z błędu z 2.0.0-rc01
w ViewModel.
Poprawki błędów
- Naprawiono regułę ViewModel Prokopard, która nieprawidłowo usuwała konstruktory b/112230489
Wersja 2.0.0-beta01
2 lipca 2018 r.
Poprawki błędów
- Naprawiliśmy regułę Promocji wykorzystującą usługę LifecycleObserver, która zachowywała tylko implementacje bez interfejsów podrzędnych b/71389427
- Naprawiono reguły Prompard w ViewModel, które pozwalały na zaciemnianie i zmniejszanie wartości
Wersje starsze niż AndroidX
W kolejnych wersjach cyklu życia starszych niż AndroidX dołącz 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.
Jedna niewielka zmiana: element android.arch.core.util.Function
został przeniesiony z arch:runtime
do arch:common
. Dzięki temu można z niego korzystać bez uzależniania środowiska wykonawczego, np. w paging:common
poniżej.
lifecycle:common
jest zależność od lifecycle:runtime
, więc ta zmiana nie ma bezpośredniego wpływu na lifecycle:runtime
, a jedynie moduły bezpośrednio bazujące na lifecycle:common
, tak jak ma to miejsce na stronie.
Wersja 1.1.0
22 stycznia 2018 r.
Zmiany w pakiecie
Dostępne są teraz nowe, znacznie mniejsze zależności:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Zmiany w interfejsie API
- Wycofane
LifecycleActivity
iLifecycleFragment
zostały usunięte. Użyj instrukcjiFragmentActivity
,AppCompatActivity
lub pomocyFragment
. - Adnotacje (
@NonNull
) zostały dodane do sekcjiViewModelProviders
iViewModelStores
- Konstruktor
ViewModelProviders
został wycofany – użyj bezpośrednio jego metod statycznych - Interfejs
ViewModelProviders.DefaultFactory
został wycofany – użyj komponentuViewModelProvider.AndroidViewModelFactory
- Dodano statyczną metodę
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
, aby pobierać statyczną metodęFactory
odpowiednią do tworzenia instancjiViewModel
iAndroidViewModel
.