Cykl życia

Komponenty uwzględniające cykl życia wykonują działania w odpowiedzi na zmianę stanu cyklu życia innego komponentu, np. działania i fragmenty. Komponenty te pomagają tworzyć lepiej uporządkowany i często lżejszy kod, który jest łatwiejszy w utrzymaniu.

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 -
Ostatnia aktualizacja tej biblioteki: 17 kwietnia 2024 r.

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.

Utwórz nowy numer

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 wieloplatformowej androidx.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 wieloplatformowej androidx.compose. W związku z tą zmianą metoda kompozycyjna viewModel akceptuje teraz KClass oprócz elementu java.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

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 i SupervisorJob() lub zastąpienie wartości domyślnej za pomocą backgroundScope dostępnego w runTest. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

Zgodność z Kotlin 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 metod ViewModelProvider.create(), a nie bezpośrednie wywoływanie jej konstruktora.
  • Aplikacje ViewModelProvider.NewInstanceFactory i ViewModelProvider.AndroidViewModelFactory są dostępne tylko na Androidzie.
    • Zalecamy, aby dodawać własne fabryki do zakresu ViewModelProvider.Factory i używać metody create, która korzysta z odbiornika CreationExtras lub DSL viewModelFactory Kotlin.
  • 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ści EmptyCoroutineContext (np. Linux).

Zmiany w działaniu

  • Funkcja InitializerViewModelFactory (w tym funkcja kreatora viewModelFactory) będzie teraz zwracać błąd IllegalArgumentException, jeśli został już dodany element initializer z wartością clazz: KClass<VM : ViewModel>. (Ic3a36)

Poprawki błędów

  • ViewModel.getCloseable obsługuje teraz zduplikowane klucze: jeśli key ma już powiązany zasób AutoCloseable, stary zasób zostanie natychmiast zastąpiony i zamknięty. (Ibeb67)
  • Dostęp do viewModelScope elementu ViewModel 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 i dropUnlessStarted, które umożliwiają pomijanie kliknięć i innych zdarzeń występujących nawet wtedy, gdy wartość LifecycleOwner spadnie poniżej określonej wartości Lifecycle.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 i LifecycleRegistry są teraz dostarczane w artefaktach zgodnych z usługą Kotlin Multiplatform. (b/317249252)

Zmiany w interfejsie API

  • Wywoływanie funkcji LifecycleStartEffect i LifecycleResumeEffect bez klucza jest teraz błędem. Zgodnie z tą samą konwencją co interfejs API DisposableEffect powielany przez te interfejsy API. (Ib0e0c, b/323518079)
  • ViewModel używa teraz pola AutoCloseable zamiast Closeable. 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ów Closeable za pomocą atrybutu key, 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ę zawieszania setCurrentState(), która gwarantuje, że zmiana stanu i wszystkie wywołania zwrotne LifecycleObserver zostaną zakończone przed zwróceniem. W szczególności w odróżnieniu od bezpośredniego ustawienia właściwości currentState nie powoduje użycia runBlocking, dzięki czemu można go bezpiecznie używać w koordynacji, takiej jak runTest.
  • Rozszerzenia LiveData elementów map i switchMap odzwierciedlają teraz działanie funkcji distinctUntilChanged – jeśli LiveData ma ustawiony parametr value, funkcja map/switchMap zostanie natychmiast wywołana w celu wypełnienia wartości value zwracanego parametru LiveData. W ten sposób wartość początkowa zostanie ustawiona jako część pierwszej kompozycji (w przypadku użycia funkcji observeAsState()), ale nie zmieni się działanie obserwacji – aktualizacje ze źródła LiveData będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować wybrany element LiveData.
  • W tej wersji rozwiązano problem, który powodował, że SavedStateHandle nie przywracał w prawidłowy sposób niestandardowych klas Parcelable 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 w get, getLiveData i getStateFlow 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ści Lifecycle.Event za pomocą metody rozszerzenia Lifecycle.asFlow().
  • Użytkownicy Jetpack Compose mogą teraz używać narzędzia LifecycleEventEffect do uruchamiania efektów ubocznych funkcji Compose w oparciu o Lifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Użytkownicy Jetpack Compose mogą używać LifecycleStartEffect i LifecycleResumeEffect do obsługi par zdarzeń – rozpoczęto je odpowiednio, a potem wznowiono. Ten interfejs API odzwierciedla interfejs z DisposableEffect 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ści Lifecycle.currentStateFlow, która zwraca wartość StateFlow, gdzie value 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 odpowiednik lifecycle.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 klas Parcelable 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 w get, getLiveData i getStateFlow 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 i LifecycleResumeEffect mogą teraz prawidłowo pozbyć się bloku efektu i utworzyć je ponownie, jeśli parametr LifecycleOwner 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 elementu TestLifecycleOwner przez użycie pola currentState w kopercie. Sprawdzanie Lint sugeruje teraz zawieszenie setCurrentState, co umożliwia ustawienie Lifecycle.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ąpienia LiveData zarówno przy wstępnym, jak i kolejnym wywołaniu uniemożliwiało dodanie instancji LiveData 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ę zawieszania setCurrentState(), która umożliwia użytkownikom korzystanie z funkcji TestLifecycleOwner z poziomu współpracy takiej jak runTest. (I329de, b/259344129)

Zmiany w interfejsie API

  • Wszystkie pliki z modułów lifecycle-livedata-ktx zostały przeniesione do głównego modułu lifecycle-livedata. (I10c6f, b/274800183)

Zmiany w działaniu

  • Rozszerzenia LiveData.map() i LiveData.switchMap() ustawiają teraz wartość value zwróconych wartości LiveData, 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żytkownika ViewModel natychmiast zamyka Closeable, jeśli ViewModel otrzymał(a) już połączenie z onCleared(). (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ć elementu SavedStateHandle, gdy stan był przywracany, wywoływano save() bez zapisywania stanu w elemencie nadrzędnym SavedStateRegistry, a następnie ponownie przywracano stan. Poprawia to interakcję między aplikacją rememberSaveable a elementem NavHost 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 funkcji Lifecycle.currentStateFlow, która zwraca wartość StateFlow, gdzie value to bieżąca wartość Lifecycle.State. (Ib212d, b/209684871)
  • Lifecycle.Event można teraz obserwować jako Flow z Lifecycle.asFlow(). (If2c0f, b/176311030)
  • Dodano interfejs API LifecycleResumeEffect, aby uruchamiać operacje tworzenia SideEffect na podstawie wywołań zwrotnych zdarzeń Lifecycle.Event.ON_RESUME i Lifecycle.Event.ON_PAUSE. (I60386, b/235529345)
  • Dodano interfejs API LifecycleStartEffect, aby uruchamiać operacje tworzenia SideEffect na podstawie wywołań zwrotnych zdarzeń Lifecycle.Event.ON_START i Lifecycle.Event.ON_STOP. (I5a8d1, b/235529345)
  • Dodano interfejs API LifecycleEventEffect, aby uruchamiać operacje tworzenia SideEffect na podstawie Lifecycle.Event. (Ic9794, b/235529345)
  • Dodano rozszerzenie Lifecycle.collectAsState(), które umożliwia bezpośrednie wyświetlanie obszaru roboczego Lifecycle.State jako narzędzia Utwórz State. Jest to odpowiednik lifecycle.currentStateFlow.collectAsState() (i krótsza alternatywa). (I11015, b/235529345)

Poprawki błędów

  • Rozszerzenie LiveData.distinctUntilChanged() ustawia teraz wartość value dla zwróconego elementu LiveData, jeśli poprzednia wartość LiveData ma ustawioną wartość. Nie zmienia to działania obserwacji – zaktualizowane wartości ze źródła LiveData będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować LiveData zwrócony z distinctUntilChanged(). (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ędnym SavedStateRegistry, a następnie ponownie przywrócono stan. Poprawia to interakcję między aplikacją rememberSaveable a elementem NavHost 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

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 elemencie LiveData 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 i Flow dla zasobu collectAsStateWithLifecycle(), 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 metody Lifecycle.whenX zostały wycofane, ponieważ użycie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do zmarnowania zasobów. Zalecamy użycie Lifecycle.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 elementu Observer utworzonego w Kotlin odpowiada teraz wartości null typu ogólnego. Jeśli Observer.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 i ProcessLifecycleOwner

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 elementu LiveData, jeśli poprzednia wartość LiveData ma ustawioną wartość. Nie zmienia to działania obserwacji – zaktualizowane wartości ze źródła LiveData będą nadal stosowane dopiero wtedy, gdy zaczniesz obserwować LiveData zwrócony z distinctUntilChanged(). (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 funkcji 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 poprzedniej funkcji getViewModelStore(). (I86409, b/240298691)
  • Rozszerzenie Kotlin w LifecycleOwner, które dostarcza pole lifecycleScope, zostało przeniesione do artefaktu lifecycle-common z usługi lifecycle-runtime-ktx. (I41d78, b/240298691)
  • Rozszerzenie Kotlin w Lifecycle, które dostarcza pole coroutineScope, zostało przeniesione do artefaktu lifecycle-common z usługi lifecycle-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 jak Transformations.map. Kod Kotlin musi teraz korzystać ze składni metody rozszerzenia Kotlin, która wcześniej była dostępna tylko w przypadku korzystania z lifecycle-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 w View z androidx.lifecycle.setViewTreeViewModelStoreOwner oraz androidx.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ści defaultViewModelProviderFactory i defaultViewModelCreationExtras, zamiast implementować odpowiadające im funkcje. (Iaed9c, b/240298691)
  • Observer jest teraz napisany w Kotlin. Metoda onChanged() używa teraz nazwy value jako parametru. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher i ProcessLifecycleOwner 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 elemencie LiveData 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() systemu lifecycle-runtime-compose nie są już w fazie eksperymentalnej. (I09d42, b/258835424)
  • Metody Lifecycle.launchWhenX i metody Lifecycle.whenX zostały wycofane, ponieważ użycie wstrzymania dyspozytora może w niektórych przypadkach prowadzić do zmarnowania zasobów. Zalecamy użycie Lifecycle.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 w View z androidx.lifecycle.setViewTreeLifecycleOwner oraz androidx.lifecycle.findViewTreeLifecycleOwner, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje poprzednie rozszerzenie Kotlin w lifecycle-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ęzyku lifecycle-reactivestreams-ktx, zostały przeniesione do modułu lifecycle-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 i ViewModelStore 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łąd ClassCastException podczas wywoływania metody get() 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 teraz callbackFlow, zamiast używać własnej implementacji Channel. (I4a8b2, b/200596935)
  • Funkcja asLiveData w FlowLiveData będzie teraz zachowywać początkową wartość StateFlow podczas tworzenia nowego obiektu LiveData. (I3f530, b/157380488)
  • Z cyklu życia 2.5.1: niestandardowe implementacje AndroidViewModelFactory prawidłowo wywołują funkcję create(modelClass) podczas korzystania z konstruktora stanowego z Lifecycle 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 i Flow na collectAsStateWithLifecycle 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ści Lifecycle.State. Gdy cykl życia spadnie poniżej tej wartości Lifecycle.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 konstruktora AndroidViewModelFactory z Lifecycle 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 API getStateFlow(), który w celu monitorowania zmian wartości zwraca kotlin StateFlow.

  • ViewModel CreationExtras – podczas tworzenia niestandardowego modelu ViewModelProvider.Factory nie trzeba już przedłużać jego trwania odpowiednio AndroidViewModelFactory ani AbstractSavedStateViewModelFactory, aby uzyskać dostęp do obiektu Application lub SavedStateHandle. Zamiast tego te pola są udostępniane do każdej podklasy ViewModelProvider.Factory jako CreationExtras z powodu nowego przeciążenia typu create: create(Class<T>, CreationExtras). Te dodatki są dostarczane automatycznie przez Twoją aktywność lub fragment kodu, gdy używasz odpowiednio Aktywności 1.5.0 i Fragmentu 1.5.0.

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • lifecycle-viewmodel udostępnia teraz łącznik DSL viewModelFactory Kotlin, który umożliwia zdefiniowanie obiektu ViewModelProvider.Factory za pomocą co najmniej jednego inicjatora lambda – po jednym dla każdej klasy ViewModel obsługiwanej przez niestandardową fabrykę, przy użyciu CreationExtras 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 API viewModel(), który do utworzenia instancji ViewModel wykorzystuje fabrykę lambda bez konieczności tworzenia niestandardowego parametru ViewModelProvider.Factory.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • Integracja z Oszczędzaniem danych do obsługi Compose (w języku angielskim) – artefakt lifecycle-viewmodel-compose zawiera teraz nowe, eksperymentalne interfejsy API w języku SavedStateHandle.saveable, które pozwalają na zachowanie podobne do rememberSaveable wspieranego przez SavedStateHandle 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ć do ViewModel co najmniej 1 obiekt Closeable, który zostanie zamknięty po wyczyszczeniu ViewModel bez konieczności ręcznej pracy w onCleared().

    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 jak viewModelScope:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

Zmiany w działaniu

  • Próba przeniesienia obiektu Lifecycle.State z tabeli INITIALIZED do DESTROYED zawsze spowoduje wywołanie IllegalStateException niezależnie od tego, czy Lifecycle ma dołączonego obserwatora.
  • LifecycleRegistry usunie teraz swoich obserwatorów, gdy osiągną stan DESTROYED.

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 funkcja MediatorLiveData.addSource() zwraca wynik NullPointerException, 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 w SavedStateHandle (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 elemencie NavHost w dolnej karcie nawigacyjnej innej niż podstawowa prowadziło do sytuacji IllegalStateException. (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 do SavedStateHandle.saveable, aby zachować zgodność z rememberSaveable (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 teraz SavedStateHandleSaver, eksperymentalny interfejs API, który zapewnia prawidłową integrację wartości w obiekcie SavedStateHandle z tym samym zapisanym stanem instancji, z którego korzysta rememberSaveable. (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życie CreationExtras, 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 API getStateFlow(), który zwraca kotlin StateFlow do monitorowania zmian wartości jako alternatywę dla użycia LiveData. (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ć do ViewModel co najmniej 1 obiekt Closeable, który będzie zamknięty po wyczyszczeniu ViewModel bez konieczności ręcznej pracy w onCleared(). (I55ea0)
  • lifecycle-viewmodel udostępnia teraz funkcję InitializerViewModelFactory, która umożliwia dodanie funkcji lambda do obsługi konkretnych klas ViewModel, w której podstawowym źródłem danych jest CreationExtras. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose oferuje teraz interfejs API viewModel(), który wykorzystuje fabrykę lambda do utworzenia instancji ViewModel bez konieczności tworzenia niestandardowego parametru ViewModelProvider.Factory. (I97fbb, b/216688927)

Zmiany w interfejsie API

  • Możesz teraz utworzyć ViewModel w usłudze CreationExtras w lifecycle-viewmodel-compose. (I08887, b/216688927)

Zmiany w działaniu

  • Próba przeniesienia obiektu Lifecycle.State z tabeli INITIALIZED do DESTROYED zawsze spowoduje wywołanie IllegalStateException niezależnie od tego, czy Lifecycle ma dołączonego obserwatora. (I7c390, b/177924329)
  • LifecycleRegistry usunie teraz swoich obserwatorów, gdy osiągną stan DESTROYED. (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 i SavedStateViewModelFactory 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: zaktualizowano lifecycle-process, aby dostosować go do wersji Startup 1.1.1, aby zapewnić, że domyślnie dostępne są poprawki, które uniemożliwiają system ProcessLifecycleInitializer wysyłanie polecenia StartupException. (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ć obiekt ViewModel. (I340f7, b/177667711)
  • Możesz teraz utworzyć model widoku w CreationExtras przy użyciu AndroidViewModelFactory 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: ten String zapewnia dostęp do klucza niestandardowego przekazanego do ViewModelProvider.get().
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY zapewnia dostęp do klasy Application.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY zapewnia dostęp do obiektu SavedStateRegistryOwner używanego do tworzenia tego modelu widoku.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY zapewnia dostęp do obiektu ViewModelStoreOwner używanego do tworzenia tego modelu widoku.
  • Funkcja SavedStateHandleSupport.DEFAULT_ARGS_KEY zapewnia dostęp do Bundle argumentów, których należy użyć do utworzenia funkcji SavedStateHandle.

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 z SavedStateHandle. W efekcie funkcja SavedStateHandle 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 dla SavedStateHandle była ponownie wyświetlana po śmierci i regeneracji, nawet jeśli została ona usunięta z SavedStateHandle. W efekcie funkcja SavedStateHandle 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życie ProcessLifecycleInitializer spowodowałoby wystąpienie błędu StartupException. (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ć parametru LifecycleEventObserver lub DefaultLifecycleObserver.
  • Dodano bibliotekę androidx.lifecycle:lifecycle-viewmodel-compose. Zawiera funkcje kompozycyjne (viewModel()) i LocalViewModelStoreOwner.
    • Zmiana przełomowa: ViewModelProvider został napisany na nowo w Kotlin. Metoda ViewModelProvider.Factory.create nie zezwala już na wartości ogólne z wartością null.
  • 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 z lifecycle.lifecycle-common-java8 do lifecycle.lifecycle-common. lifecycle.lifecycle-common-java8nie ma już żadnej dodatkowej funkcji poza lifecycle.lifecycle-common, więc zależność od niej można zastąpić kodem lifecycle.lifecycle-common.
  • Interfejs API innych niż współprogramy został przeniesiony z lifecycle-viewmodel-ktx do modułu lifecycle-viewmodel.
  • lifecycle-process do inicjowania ProcessLifecycleOwner używa teraz androidx.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ści LifecycleEventObserver lub DefaultLifecycleObserver. (I5a8fa)
  • Przeniesiono funkcję DefaultLifecycleObserver z androidx.lifecycle.lifecycle-common-java8 do androidx.lifecycle.lifecycle-common. androidx.lifecycle.lifecycle-common-java8 nie oferuje już żadnej dodatkowej funkcji poza androidx.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łu lifecycle-viewmodel. (I6d5b2)

Wkład z zewnątrz

  • Dziękujemy dmitrilc za poprawienie typu w dokumentacji ViewModel. (#221)

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 lintowania RepeatOnLifecycleWrongUsage, który wykrywa, kiedy w onStart() lub onResume() jest nieprawidłowo używany protokół repeateOnLifecycle. (706078, b/187887400)

Zmiany w interfejsie API

  • Interfejs LifecycleOwner.addRepeatingJob API został usunięty na rzecz Lifecycle.repeatOnLifecycle, który przestrzega uporządkowanej równoczesności i jest łatwiejszy do zastosowania. (I4a3a8)
  • Udostępnij plik ProcessLifecycleInitializer publicznie, aby inne obiekty androidx.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

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 inicjowania ProcessLifecycleOwner używa teraz androidx.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 API Lifecycle.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 API LifecycleOwner.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ć metody viewModel(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 i androidx.navigation:navigation-compose synchronizowanie zależności od androidx.compose.compiler:compiler:1.0.0-beta04 i androidx.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 element ViewModelStoreOwner jest dostępny w bieżącej kompozycji. Interfejsy API, które wymagają żądania ViewModelStoreOwner, takie jak viewModel() i NavHost, nadal zgłaszają wyjątek, jeśli ViewModelStoreOwner 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 funkcje provides, których można używać z CompositionLocalProvider, zastępując interfejs API asProvidableCompositionLocal(). (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() i LocalViewModelStoreOwner zostały przeniesione z androidx.compose.ui.viewinterop do tego artefaktu w pakiecie androidx.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łanie setSavedStateProvider() dla danego klucza i podanie identyfikatora SavedStateProvider, który zwróci wywołanie zwrotne do saveState(), gdy SavedStateHandle 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ów LifecycleRegistry 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 elementu LifecycleRegistry uzyskuje się z innych wątków.
  • Moduły pomocnicze do stanu cyklu życia i zdarzeń: do tabeli Lifecycle.Event dodano statyczne metody pomocnicze downFrom(State), downTo(State), upFrom(State) i upTo(State) służące do generowania elementu Event o wartości State i kierunku przejścia. Dodano metodę getTargetState() zapewniającą element State, do którego cykl życia zostanie przeniesiony bezpośrednio po Event.
  • withStateAtLeast: dodano interfejsy API Lifecycle.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 metod when*, ponieważ nie pozwalają na uruchamianie kodu zawieszającego ani nie wymagają niestandardowego dyspozytora. (Aosp/1326081)
  • Interfejsy API ViewTree: nowe interfejsy API ViewTreeLifecycleOwner.get(View) i ViewTreeViewModelStoreOwner.get(View) pozwalają pobierać odpowiadające im interfejsy LifecycleOwner i ViewModelStoreOwner w przypadku wystąpienia View. Aby wypełnić to pole, musisz przejść na Aktywność 1.2.0 i Fragment 1.3.0 oraz na AppCompat w wersji 1.3.0-alpha01 lub nowszej. Rozszerzenia findViewTreeLifecycleOwner i findViewTreeViewModelStoreOwner Kotlin są dostępne odpowiednio w lifecycle-runtime-ktx i lifecycle-viewmodel-ktx.
  • Wycofanie rozszerzenia Kotlin LiveData.observe(): rozszerzenie LiveData.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() obiektu SavedStateHandle jest teraz spójna przed zapisaniem stanu i po jego zapisaniu – oprócz kluczy używanych wcześniej w set() i getLiveData() zawiera teraz klucze używane wcześniej przez setSavedStateProvider(). (Aosp/1517919, b/174713653)

Wkład z zewnątrz

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

Zmiany w dokumentacji

  • Kreator liveData i dokumentacja asLiveData() 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 pomocnicze downFrom(State), downTo(State), upFrom(State) i upTo(State) do generowania wartości Event z wartością State i kierunkiem przejścia. Dodano metodę getTargetState() zapewniającą element State, do którego cykl życia zostanie przeniesiony bezpośrednio po Event. (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 metod when*, 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ów LifecycleRegistry 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 elementu LifecycleRegistry 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 pakiecie lifecycle-livedata-core-ktx (a konkretnie NullSafeMutableLiveData). (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ń do onActive() i onInactive(). (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 w MutableLiveData 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łanie setSavedStateProvider() dla danego klucza i udostępnienie identyfikatora SavedStateProvider, który zwróci wywołanie zwrotne do saveState(), gdy SavedStateHandle zostanie poproszona o zapisanie stanu. (b/155106862)
  • Nowy interfejs API ViewTreeViewModelStoreOwner.get(View) pozwala pobrać zawierający ViewModelStoreOwner z użyciem instancji View. Aby je wypełnić, musisz przejść na Aktywność 1.2.0-alpha05, Fragment 1.3.0-alpha05 i AppCompat 1.3.0-alpha01. Rozszerzenie findViewModelStoreOwner() 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 linta MutableLiveData opublikowane w ramach cyklu życia 2.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 null Application do swojego konstruktora, co pozwala na lepszą obsługę przypadków, gdy nie jest łatwo dostępna i obsługa AndroidViewModel 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ący LifecycleOwner z użyciem instancji View. Aby je wypełnić, musisz przejść na Aktywność 1.2.0-alpha01 i Fragment 1.3.0-alpha01. Rozszerzenie findViewTreeLifecycleOwner 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 elemencie MutableLiveData, który został zdefiniowany w Kotlin jako niepusty. Ta funkcja jest dostępna podczas korzystania z artefaktów livedata-core-ktx lub livedata-ktx. (Aosp/1154723, aosp/1159092)
  • Dostępny jest nowy artefakt lifecycle-runtime-testing, który udostępnia interfejs TestLifecycleOwner, który implementuje LifecycleOwner 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(): interfejs ViewModelProviders.of() został wycofany. Jeśli używasz fragmentu 1.2.0, możesz przekazać Fragment lub FragmentActivity do nowego konstruktora ViewModelProvider(ViewModelStoreOwner), aby uzyskać te same funkcje.
  • Wycofanie artefaktów lifecycle-extensions: z powodu opisanego powyżej wycofania interfejsu ViewModelProviders.of() ta wersja oznacza wycofanie ostatniego interfejsu API w lifecycle-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żywasz LifecycleService i lifecycle-process, jeśli używasz ProcessLifecycleOwner), a nie lifecycle-extensions, ponieważ w przyszłości nie udostępnimy wersji lifecycle-extensions systemu 2.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 w ViewModelStore, a następnie wykorzystywana w domyślnej fabryce.
  • Popraw użycie metody Dispatchers.Main.immediate w metodzie launchWhenCreated 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 metody Dispatchers.Main zamiast Dispatchers.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 i LifecycleOwner 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łędu NullPointerException przy korzystaniu z wersji 2.0.0 lub 2.1.0 wartości lifecycle-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 implementacja liveData używają teraz Dispatchers.Main.immediate zamiast Dispatchers.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

Zmiany w interfejsie API

  • Interfejs ViewModelProviders.of() został wycofany. Aby uzyskać te same funkcje, możesz przekazać do nowego konstruktora ViewModelProvider(ViewModelStoreOwner) metodę Fragment lub FragmentActivity. (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ągiem LiveDataScope.latestValue, który będzie śledził bieżącą wyemitowaną wartość bloku liveData.
  • Dodano nowe przeciążenie do kreatora liveData, który odbiera parametr timeout jako typ Duration

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 klasy ViewModel 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 do SavedStateHandle.

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ści IllegalStateException. (b/139093676)
  • Naprawiono IllegalStateException przy korzystaniu z AbstractSavedStateViewModelFactory. (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ż zakresu AbstractSavedStateViewModelFactory, a parametr SavedStateHandle 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

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 na SavedStateViewModelFactory.
  • Nazwa aplikacji AbstractSavedStateVMFactory została zmieniona na AbstractSavedStateViewModelFactory.

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 otrzymuje SavedStateHandleobiekt 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 klasa GenericLifecycleObserver.
  • 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łowa LiveData 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, inicjowanie ViewModel 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() i by activityViewModels() został zmieniony tak, aby bezpośrednio obsługiwać interfejs ViewModelStore, a nie tylko ViewModelStoreOwner. (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ócz ViewModelProvider.Factory, składa się z nowych funkcji, takich jak przekazywanie usług w Kotlin by 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łędu ViewModel 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 klasa GenericLifecycleObserver.
  • Dodano rozszerzenia ktx dla metod (LiveData.observe) i metod (Transformations.*).
  • Dodano metodę Transformations.distinctUntilChanged. Tworzy nowy obiekt LiveData, 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 i Class w metodzie create.

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 i LifecycleFragment zostały usunięte. Użyj instrukcji FragmentActivity, AppCompatActivity lub pomocy Fragment.
  • Adnotacje (@NonNull) zostały dodane do sekcji ViewModelProviders i ViewModelStores
  • Konstruktor ViewModelProviders został wycofany – użyj bezpośrednio jego metod statycznych
  • Interfejs ViewModelProviders.DefaultFactory został wycofany – użyj komponentu ViewModelProvider.AndroidViewModelFactory
  • Dodano statyczną metodę ViewModelProvider.AndroidViewModelFactory.getInstance(Application), aby pobierać statyczną metodę Factory odpowiednią do tworzenia instancji ViewModel i AndroidViewModel.