Ciclo di vita
Questa tabella elenca tutti gli artefatti nel gruppo androidx.lifecycle.
| Elemento | Release stabile | Candidato per la release | Release beta | Release alpha | 
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - | 
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - | 
Dichiara le dipendenze
Per aggiungere una dipendenza da Lifecycle, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per
la tua app o il tuo modulo:
Kotlin
Trendy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Trendy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Per saperne di più sulle dipendenze, consulta Aggiungi dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 2.10
Versione 2.10.0-beta01
22 ottobre 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 è stato rilasciato. La versione 2.10.0-beta01 contiene questi commit.
Modifiche alle API
- ViewModelStoreNavEntryDecoratorDefaultè stato rinominato in- ViewModelStoreNavEntryDecoratorDefaults, con la "s". (I6d27b, b/444447434)
Correzioni di bug
- rememberLifecycleOwnernon si arresta più in modo anomalo se il proprietario riceve un evento- Lifecycle.Event.ON_DESTROYprima di passare a- Lifeycle.State.CREATED. (I6f98e, b/444594991)
Versione 2.10.0-alpha05
8 ottobre 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 è stato rilasciato. La versione 2.10.0-alpha05 contiene questi commit.
Modifiche alle API
- L'removeViewModelStoreOnPopCallback()ora fa parte di un oggettoViewModelStoreNavEntryDecoratorDefault, in cui altre piattaforme e implementazioni possono chiamare il valore predefinito. (Ia1f23, b/444447434)
- È stato eseguito il refactoring di ViewModelStoreNavEntryDecoratorda funzione a classe per riflettere meglio la sua funzionalità come factory perNavEntryDecoratored è stato rinominato il parametroshouldRemoveViewModelStoredel decorator inremoveViewModelStoreOnPopper chiarire che questo callback viene richiamato solo quando una voce viene estratta dabackStack. (Iefdc5, b/444447434)
Versione 2.10.0-alpha04
24 settembre 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 è stato rilasciato. La versione 2.10.0-alpha04 contiene questi commit.
Modifiche alle API
- Esegui il refactoring del componibile LifecycleOwnerinrememberLifecycleOwner. Ora la funzione restituisce direttamenteLifecycleOwner. Per fornire questo proprietario a una composizione secondaria, utilizzaCompositionLocalProvider. (Ic57f0, b/444446629)
- Aggiungi stub KMP a lifecycle-viewmodel-navigation3 per consentire a JetBrains di fornire fork che riempiono questi target e quindi supportano CMP. (I44a4c)
Versione 2.10.0-alpha03
27 agosto 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 è stato rilasciato. La versione 2.10.0-alpha03 contiene questi commit.
Modifiche alle API
- Aggiorna Compose alla versione 1.9.0. (I2b9de)
Versione 2.10.0-alpha02
13 agosto 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 è stato rilasciato. La versione 2.10.0-alpha02 contiene questi commit.
Nuove funzionalità
- Il componente componibile - LifecycleOwnerora può creare un ciclo di vita della radice autonomo. Se imposti (in modo esplicito)- parent = null, il nuovo ciclo di vita funziona indipendentemente da qualsiasi host (come- Activity,- Fragmento- NavBackStackEntry). Inizia non appena il componibile entra nella composizione e viene distrutto automaticamente quando esce. (I8dfbe, b/433659048)- @Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Modifiche alle API
- Nel componibile LifecycleOwner, il parametroparentLifecycleOwnerè stato rinominato inparent. (I080bc)
Correzioni di bug
- LifecycleOwnercomposable ora sposta correttamente il suo ciclo di vita su- DESTROYEDal momento dello smaltimento. In questo modo si prevengono potenziali perdite per il codice esterno che contiene un riferimento al ciclo di vita. (I9e5b7, b/433659048)
- Spostamento di minSdk predefinito dall'API 21 all'API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Contributo esterno
- Rimuovi i campi di supporto interni non necessari da LifecycleOwner. Grazie a Jake Wharton per il suo contributo. (Ideddb)
Versione 2.10.0-alpha01
30 luglio 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 è stato rilasciato. La versione 2.10.0-alpha01 contiene questi commit.
Nuove funzionalità
- Aggiungi un elemento componibile - LifecycleOwnerper consentire la creazione di cicli di vita con ambito direttamente all'interno della UI. Questa opzione è utile per i componenti che devono gestire i propri cicli di vita in modo indipendente. Per un esempio di come Navigation3 integra questo nuovo componente componibile, vedi aosp/3708610. (76cbf7)- @Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Modifiche alle API
- Aggiungi una funzione di fabbrica del builder per CreationExtras, fornendo un'API Kotlin più comoda e idiomatica. (Iab2bd)
- Aggiungi il supporto nativo per i tipi nullable in SavedStateHandle.saved, semplificando il salvataggio e il ripristino delle proprietà nullable. (I54d69, b/421325690)
- Contrassegna i costruttori SavedStateHandlecome@VisibleForTesting. (Iff0e0, b/408002794)
Versione 2.9
Versione 2.9.4
17 settembre 2025
androidx.lifecycle:lifecycle-*:2.9.4 è stato rilasciato. La versione 2.9.4 contiene questi commit.
Correzioni di bug
- È stato corretto un errore relativo al mancato utilizzo del plug-in Compose Compiler che causava l'interruzione degli artefatti KMP del ciclo di vita. (Ie95bc, b/443096483, b/443965665)
Versione 2.9.3
27 agosto 2025
androidx.lifecycle:lifecycle-*:2.9.3 è stato rilasciato. La versione 2.9.3 contiene questi commit.
Nuove funzionalità
- Aggiungi nuovi target Kotlin Multiplatform (KMP) agli artefatti *-composedi Lifecycle. Lifecycle ora supporta le seguenti piattaforme: JVM (Android e computer), Native (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). (I0a0e4)
Correzioni di bug
- Aggiornamento di androidx.annotationalla versione 1.9.1 (Ic9e4f, b/397701294)
Versione 2.9.2
16 luglio 2025
androidx.lifecycle:lifecycle-*:2.9.2 è stato rilasciato. La versione 2.9.2 contiene questi commit.
Correzioni di bug
- Sono stati aggiunti nuovi target Kotlin Multiplatform (KMP) agli artefatti del ciclo di vita. Lifecycle ora supporta le seguenti piattaforme: JVM (Android e computer), Native (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). Tieni presente che non sono state aggiunte nuove destinazioni KMP agli artefatti *-compose, poiché ciò dipende dalla release stabile di Compose 1.9. (I01cb8).
Aggiornamenti delle dipendenze
- Il ciclo di vita ora dipende da Annotation 1.9.1per abilitare il supporto dei nuovi target KMP (Ic9e4f, b/397701294).
Versione 2.9.1
4 giugno 2025
androidx.lifecycle:lifecycle-*:2.9.1 è stato rilasciato. La versione 2.9.1 contiene questi commit.
Correzioni di bug
- Correggi il problema relativo alla mancata cancellazione degli stati SavedStateHandle.remove(key)SavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
Versione 2.9.0
7 maggio 2025
androidx.lifecycle:lifecycle-*:2.9.0 è stato rilasciato. La versione 2.9.0 contiene questi commit.
Modifiche importanti dalla versione 2.8.0
- È disponibile un nuovo artefatto KMP androidx.lifecycle:lifecycle-viewmodel-testingche fornisce una classeViewModelScenarioper testareViewModelsin isolamento, con supporto peronClearedeSavedStateHandle, nonché per testare l'interruzione e la ricreazione del processo tramiterecreate().
- Aggiungi getMutableStateFlowaSavedStateHandleper restituire unMutableStateFlow. Questa nuova funzione è esclusiva per le chiavi e non può essere utilizzata congetLiveData. Se provi a utilizzarli entrambi per accedere allo stesso stato, verrà generata un'eccezione.
- CreationExtrasora include sovraccarichi di operatori simili a mappe per consentire la manipolazione idiomatica dei contenuti in Kotlin. Consente l'utilizzo di- in,- +=e- +con- CreationExtras.
Supporto della serializzazione KotlinX
- Con il supporto di KotlinX Serialization aggiunto in SavedState - 1.3.0, abbiamo introdotto- saved, un delegato di proprietà lazy, per semplificare l'archiviazione delle classi- @Serializablein un- SavedStateHandlee il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegato- savedè pigro e non chiamerà la lambda- initné salverà nulla in- SavedStateHandlefinché non viene eseguito l'accesso.- @Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- Il modulo lifecycle-testingora è compatibile con KMP, incluse API comeTestLifecycleOwner.
- Il modulo lifecycle-viewmodel-savedstateora è compatibile con KMP, incluse API comeSavedStateHandle.
- androidx.compose.ui.platform.LocalLifecycleOwnerè ora disponibile nel set di origini comuni.
- NewInstanceFactoryè ora disponibile su JVM Desktop e Android.
Modifiche al comportamento
- Lo stato Lifecycle.DESTROYEDè terminale e qualsiasi tentativo di spostare unLifecycleda questo stato a un altro ora genererà unIllegalStateException.
- SavedStateHandlenon include più- SavedStateProvider.saveState()in cui- Bundlerestituito è vuoto.
Versione 2.9.0-rc01
23 aprile 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 è stato rilasciato. La versione 2.9.0-rc01 contiene questi commit.
Avviso di compatibilità dell'API Lint
- JetBrains ha modificato KaCallableMemberCallda una classe a un'interfaccia, il che interrompe la compatibilità binaria. Ciò può causare arresti anomali se la versione di AGP del progetto è diversa da quella utilizzata per compilare i controlli lint. Questo aggiornamento è stato apportato in aosp/3577172, ma non era presente nelle note di rilascio. Lo chiariamo qui. Correzione consigliata: esegui l'aggiornamento all'ultima versione stabile di AGP. Se non riesci a eseguire l'aggiornamento completo, utilizzaandroid.experimental.lint.versionper allineare i controlli lint alla tua versione di AGP. Per maggiori dettagli, consulta Modifiche al comportamento di Compose Runtime.
Versione 2.9.0-beta01
9 aprile 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 è stato rilasciato. La versione 2.9.0-beta01 contiene questi commit.
Modifiche alle API
- Lifecycle ViewModel Composeora utilizza la stessa configurazione Kotlin Multiplatform di Compose Runtime 1.7.1 e versioni successive. Gli artefatti- -desktopsono stati rimossi e sono stati aggiunti gli artefatti- -jvmStubse- -linuxx64Stubs. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose. (I5cb14, b/406592090)
Aggiornamenti delle dipendenze
- Questa libreria ora ha come target il livello del linguaggio Kotlin 2.0 e richiede KGP 2.0.0 o versioni successive. (Idb6b5)
- Lifecycle ViewModel Composeora dipende da Compose 1.7.8. (I5cb14, b/406592090)
Versione 2.9.0-alpha13
26 marzo 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 viene rilasciato senza modifiche pubbliche degne di nota. La versione 2.9.0-alpha13 contiene questi commit.
Versione 2.9.0-alpha12
12 marzo 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 è stato rilasciato. La versione 2.9.0-alpha12 contiene questi commit.
Modifiche alle API
- Aggiungi l'annotazione @MainThreadaViewModelProvider.getin tutte le piattaforme KMP supportate. (I7e8dd, b/397736115)
- Rinomina SavedState*DelegatesinSavedState*Delegate. (I8589b, b/399629301)
Versione 2.9.0-alpha11
26 febbraio 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 è stato rilasciato. La versione 2.9.0-alpha11 contiene questi commit.
Modifiche alle API
- Aggiungi il parametro SavedStateConfigai delegati disaved()(I39b3a)
Versione 2.9.0-alpha10
12 febbraio 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 è stato rilasciato. La versione 2.9.0-alpha10 contiene questi commit.
Modifiche alle API
- Sposta MutableStateSerializerinsavedstate-composedalifecycle-viewmodel-compose. (I4f690, b/378895074)
Contributo esterno
- Aggiunge un nuovo problema di Lint per la chiamata di Lifecycle::currentStatenella composizione, suggerendo invece l'utilizzo dicurrentStateAsalue().valueper garantire che le modifiche nello stato del ciclo di vita causino correttamente la ricomposizione. Grazie Steven Schoen. (Iad484)
Versione 2.9.0-alpha09
29 gennaio 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 è stato rilasciato. La versione 2.9.0-alpha09 contiene questi commit.
Nuove funzionalità
- Aggiungi MutableStateSerializerper la serializzazione diandroidx.compose.runtime.MutableState. (Idfc48, b/378895074)
Modifiche alle API
- Sostituisci le funzioni delegate SavedStateHandle.saved()sottoposte a overload con parametri predefiniti (Icd1c1)
- AbstractSavedStateViewModelFactoryè deprecato perché crea un- SavedStateHandleper ogni- ViewModel, causando un sovraccarico non necessario. Utilizza- ViewModelProvider.Factorycon- CreationExtras.createSavedStateHandleper una creazione più efficiente di- ViewModel. (Ia920b, b/388590327)
Versione 2.9.0-alpha08
11 dicembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 è stato rilasciato. La versione 2.9.0-alpha08 contiene questi commit.
Nuove funzionalità
- Aggiungi ViewModelScenario.recreateper simulare l'interruzione di un processo di sistema ricreandoViewModelin fase di test e tutti i componenti associati. (Id6a69, b/381063087)
- Le istanze LifecycleOwnereViewModelStoreOwnerrecuperate tramite le rispettive APIfindViewTreeora possono essere risolte tramite i genitori disgiunti di una vista, ad esempio unViewOverlay. Per ulteriori informazioni sui genitori della visualizzazione disgiunta, consulta le note di rilascio di core o la documentazione inViewTree.setViewTreeDisjointParent. (I800f4)
Modifiche alle API
- Rendi più coerenti i nomi e l'organizzazione dei pacchetti con SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Correzioni di bug
- Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto: -Xjspecify-annotations=strict(questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (Ie4340, b/326456246)
- Sequenza di compensazione ViewModel.onCleareddei documenti. (I586c7, b/363984116)
Versione 2.9.0-alpha07
13 novembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 è stato rilasciato. La versione 2.9.0-alpha07 contiene questi commit.
Compatibilità multipiattaforma Kotlin
- Lifecycle ViewModel SavedStateora è compatibile con KMP. In questo modo puoi utilizzareSavedStateHandlenel codice comune. (Ib6394, b/334076622)
Supporto della serializzazione KotlinX
- Con il supporto di KotlinX Serialization aggiunto in SavedState - 1.3.0-alpha05, abbiamo introdotto- saved, un delegato di proprietà lazy, per semplificare l'archiviazione delle classi- @Serializablein un- SavedStateHandlee il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegato- savedè pigro e non chiamerà la lambda- initné salverà nulla in- SavedStateHandlefinché non viene eseguito l'accesso. (I47a88, b/376026744)- @Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Modifiche alle API
- Aggiungi getMutableStateFlowaSavedStateHandleper restituire unMutableStateFlow. Questa nuova funzione è esclusiva per le chiavi e non può essere utilizzata congetLiveData. Se provi a utilizzarli entrambi per accedere allo stesso stato, verrà generata un'eccezione. (I04a4f, b/375408415)
Versione 2.9.0-alpha06
30 ottobre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 è stato rilasciato. La versione 2.9.0-alpha06 contiene questi commit.
Modifiche al comportamento
- Lo stato Lifecycle.DESTROYEDè terminale e qualsiasi tentativo di spostare unLifecycleda questo stato a un altro ora genererà unIllegalStateException. (I116c4, b/370577987)
- SavedStateHandlenon include più- SavedStateProvider.saveState()in cui- Bundlerestituito è vuoto. (I910b5, b/370577987)
Correzioni di bug
- Lifecycle.eventFlowora viene completato correttamente quando- Lifecycleè- DESTROYED(I293b2, b/374043130)
Versione 2.9.0-alpha05
16 ottobre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 viene rilasciato senza modifiche significative. La versione 2.9.0-alpha05 contiene questi commit.
Versione 2.9.0-alpha04
2 ottobre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 è stato rilasciato. La versione 2.9.0-alpha04 contiene questi commit.
Kotlin Multiplatform
- Il modulo lifecycle-viewmodel-savedstateè ora configurato per essere compatibile con KMP in preparazione alla disponibilità di API comeSavedStateHandlenel set di origini comuni in una release futura. (I503ed, I48764, b/334076622)
Versione 2.9.0-alpha03
18 settembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 è stato rilasciato. La versione 2.9.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Lifecycle 2.8.6: l'NullSafeMutableLiveDataerrore Lint ha un supporto migliorato per i cast intelligenti, evitando falsi positivi. (85fed6, b/181042665)
Aggiornamenti delle dipendenze
- Da Ciclo di vita 2.8.6: ora il runtime del ciclo di vita di Compose dipende da Compose Runtime1.7.1
- Il runtime del ciclo di vita ora dipende da ProfileInstaller 1.4.0
Versione 2.9.0-alpha02
4 settembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 è stato rilasciato. La versione 2.9.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Ciclo di vita 2.8.5: aggiorna le regole diandroidx.lifecycle.ReportFragmentProGuard per consentire l'offuscamento . (ff898e1)
Contributo esterno
- Sposta androidx.compose.ui.platform.LocalLifecycleOwnernel set di origini comuni (KMP). Grazie a Ivan Matkov di JetBrains per il contributo. (8cd5d03)
- Da Lifecycle 2.8.5: il delegato dell'estensione `SavedStateHandle.saveable` ora supporta i valori nullabili. Grazie a Roman Kalukiewicz per il suo contributo. (0d78ea6)
Versione 2.9.0-alpha01
7 agosto 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 è stato rilasciato. La versione 2.9.0-alpha01 contiene questi commit.
Kotlin Multiplatform
- lifecycle-testingora è compatibile con KMP. (Iea41e)
- È stato aggiunto il supporto per la destinazione multipiattaforma Kotlin linuxArm64(I139d3, b/338268719)
Nuove funzionalità
- È disponibile un nuovo artefatto KMP androidx.lifecycle:lifecycle-viewmodel-testingche fornisce una classeViewModelScenarioper testare i ViewModels in isolamento, con supporto peronCleared(tutte le piattaforme) eSavedStateHandle(solo Android). (337f68d, c9b3409, 9799a95c, b/264602919)
- La creazione di un ViewModelconViewModelProviderora è thread-safe; le annotazioni@MainThreadsono state rimosse. (Ifd978, b/237006831)
Modifiche alle API
- Aggiungi la funzione di fabbrica CreationExtras.Key()per semplificare la creazione di oggettiCreationExtras.Keyanonimi. (I970ee)
- CreationExtrasora include sovraccarichi di operatori simili a mappe per consentire la manipolazione idiomatica dei contenuti in Kotlin. Consente l'utilizzo di- in,- +=e- +con- CreationExtras. (Ib4353)
- CreationExtrasora implementa i metodi- equals,- hashCodee- toString. (Ib4353)
- NewInstanceFactoryè ora disponibile su JVM Desktop e Android. (d3d0892)
- Proprietà di estensione inline per esporre in modo sicuro l'applicazione sottostante nella versione 2.0 del linguaggio Kotlin (I39df2)
Correzioni di bug
- È stata rimossa la definizione manuale dell'accesso alle nuove API della piattaforma, poiché avviene automaticamente tramite la modellazione delle API quando si utilizza R8 con AGP 7.3 o versioni successive (ad es. R8 versione 3.3) e per tutte le build quando si utilizza AGP 8.1 o versioni successive (ad es. D8 versione 8.1). I client che non utilizzano AGP sono invitati a eseguire l'aggiornamento alla versione 8.1 o successive di D8. Consulta questo articolo per ulteriori dettagli. (If6b4c, b/345472586)
Versione 2.8
Versione 2.8.7
30 ottobre 2024
androidx.lifecycle:lifecycle-*:2.8.7 è stato rilasciato. La versione 2.8.7 contiene questi commit.
Modifiche alle API
- androidx.compose.ui.platform.LocalLifecycleOwnerè ora disponibile nel set di origini comuni (KMP). (6a3f5b3)
- lifecycle-runtime-compose: sono stati rimossi- desktopelementi e sono stati aggiunti- -jvmStubse- -linuxx64Stubselementi. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose. (6a3f5b3)
Versione 2.8.6
18 settembre 2024
androidx.lifecycle:lifecycle-*:2.8.6 è stato rilasciato. La versione 2.8.6 contiene questi commit.
Correzioni di bug
- L'NullSafeMutableLiveDataerrore Lint ha un supporto migliorato per i cast intelligenti, evitando falsi positivi. (85fed6, b/181042665)
Aggiornamenti delle dipendenze
- Lifecycle Runtime Compose ora dipende da Compose Runtime 1.7.1
Versione 2.8.5
4 settembre 2024
androidx.lifecycle:lifecycle-*:2.8.5 è stato rilasciato. La versione 2.8.5 contiene questi commit.
Correzioni di bug
- Aggiorna le regole di androidx.lifecycle.ReportFragmentProGuard per consentire l'offuscamento . (ff898e1)
Contributo esterno
- Il delegato dell'estensione SavedStateHandle.saveableora supporta i valori nullabili. Grazie a Roman Kalukiewicz per il suo contributo. (0d78ea6)
Versione 2.8.4
24 luglio 2024
androidx.lifecycle:lifecycle-*:2.8.4 è stato rilasciato. La versione 2.8.4 contiene questi commit.
Correzioni di bug
- LiveData.asFlow()ora gestisce correttamente i casi in cui il flusso restituito viene completato immediatamente dopo aver ricevuto un valore già impostato su- LiveData(ad esempio, quando si utilizza- take(1)). (I9c566)
- Il completamento di Lifecycle*Effectora è idempotente (ovvero, seonStopOrDisposeè stato chiamato perché il ciclo di vita è stato interrotto, non verrà chiamato una seconda volta al momento dello smaltimento, a meno che il ciclo di vita non torni aSTARTED). (I5f607, b/352364595)
Versione 2.8.3
July 1, 2024
androidx.lifecycle:lifecycle-*:2.8.3 è stato rilasciato. La versione 2.8.3 contiene questi commit.
Correzioni di bug
- È stato risolto un problema relativo alla compatibilità con le versioni precedenti di Lifecycle 2.8 con Compose 1.6.0 e versioni precedenti durante l'utilizzo della riduzione del codice. (aosp/3133056, b/346808608)
Versione 2.8.2
12 giugno 2024
androidx.lifecycle:lifecycle-*:2.8.2 è stato rilasciato. La versione 2.8.2 contiene questi commit.
Correzioni di bug
- Sono stati corretti gli errori CompositionLocal LocalLifecycleOwner not presentquando si utilizza Lifecycle 2.8.X con Compose 1.6.X o versioni precedenti. Ora puoi utilizzare Lifecycle 2.8.2 con qualsiasi versione di Compose senza soluzioni alternative. (aosp/3105647, b/336842920)
- ViewModelProvidernon si arresterà più in modo anomalo quando si combinano versioni precedenti delle dipendenze del ciclo di vita di- compileOnlycon le versioni 2.8 e successive, risolvendo i problemi relativi a librerie come LeakCanary. (I80383, b/341792251)
Versione 2.8.1
29 maggio 2024
androidx.lifecycle:lifecycle-*:2.8.1 è stato rilasciato. La versione 2.8.1 contiene questi commit.
Correzioni di bug
- lifecycle-viewmodel-composeora ha solo una dipendenza comune da- compose-runtime, rimuovendo la dipendenza comune da- compose-ui. L'artefatto Android mantiene il suo- compose-uiper la compatibilità. (aosp/3079334, b/339562627)
- L'integrazione di ViewModeldisaveableche utilizza i delegati delle proprietà ora utilizza il nome della classe come parte della chiave generata automaticamente, evitando conflitti se più classi utilizzano lo stessoSavedStateHandle. (aosp/3063463)
Versione 2.8.0
14 maggio 2024
androidx.lifecycle:lifecycle-*:2.8.0 è stato rilasciato. La versione 2.8.0 contiene questi commit.
Modifiche importanti dalla versione 2.7.0
- LocalLifecycleOwnerè stato spostato dalla UI Compose a- lifecycle-runtime-composein modo che le relative API helper basate su Compose possano essere utilizzate al di fuori della UI Compose.
- L'artefatto lifecycle-runtime-composeora contiene le APIdropUnlessResumededropUnlessStarted, che ti consentono di eliminare i clic o altri eventi che si verificano anche dopo cheLifecycleOwnerè sceso al di sotto del valoreLifecycle.Statespecificato. Ad esempio, può essere utilizzato con Navigation Compose per evitare la gestione degli eventi di clic dopo l'inizio di una transizione a un'altra schermata:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
- ViewModel.viewModelScopeè ora un parametro del costruttore di cui è possibile eseguire l'override, il che ti consente di inserire il tuo dispatcher e- SupervisorJob()o di eseguire l'override del valore predefinito utilizzando- backgroundScopedisponibile in- 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) }
- ViewModelè stato riscritto in Kotlin e ora utilizza- AutoClosableanziché- Closeable. Ora supporta l'aggiunta di oggetti- AutoCloseablecon un- keyche consente di recuperarli tramite- getCloseable().
- La chiamata di - LifecycleStartEffecte- LifecycleResumeEffectsenza una chiave ora genera un errore, seguendo la stessa convenzione dell'API- DisposableEffectche queste API rispecchiano.
- LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)deprecato a favore di- LiveData.toPublisher(lifecycleOwner).
- Le estensioni Kotlin - lifecycle-livedata-core-ktxsono state spostate nel modulo- lifecycle-livedata-core.
- NullSafeMutableLiveDataè stato sottoposto a refactoring per evitare molti falsi positivi.
Compatibilità del ciclo di vita di Kotlin Multiplatform
Le API del ciclo di vita principali in Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event e LifecycleRegistry ora vengono fornite in artefatti compatibili con Kotlin Multiplatform.
Artefatti interessati:
- lifecycle-commonsposta la maggior parte delle API su- commone supporta JVM e iOS oltre ad Android.
- lifecycle-runtimesposta la maggior parte delle API su- commone supporta JVM e iOS oltre ad Android.
- lifecycle-runtime-ktxora è vuoto e tutte le API sono state spostate in- lifecycle-runtime.
- lifecycle-runtime-composesposta tutte le API su- commone spedisce un artefatto Android, in linea con il supporto multipiattaforma di- androidx.compose.
Compatibilità multipiattaforma Kotlin di ViewModel
L'artefatto lifecycle-viewmodel e le API come ViewModel, ViewModelStore, ViewModelStoreOwner e ViewModelProvider ora vengono spediti in artefatti compatibili con Kotlin Multiplatform.
Per adattarsi a questa modifica, i metodi come quelli su ViewModelProvider che richiedevano un java.lang.Class<T> ora hanno un metodo equivalente che richiede un kotlin.reflect.KClass<T>.
La compatibilità binaria su Android è stata mantenuta, ma ci sono alcune modifiche degne di nota se si confronta la superficie dell'API Android con la superficie dell'API comune:
- La creazione di un'istanza ViewModelProviderora viene eseguita tramite i metodiViewModelProvider.create()anziché chiamando direttamente il relativo costruttore.
- ViewModelProvider.NewInstanceFactorye- ViewModelProvider.AndroidViewModelFactorysono disponibili solo su Android.- Si consiglia di estendere le fabbriche personalizzate da ViewModelProvider.Factorye utilizzare il metodocreateche accetta unCreationExtraso utilizzare il DSL KotlinviewModelFactory.
 
- Si consiglia di estendere le fabbriche personalizzate da 
- L'utilizzo di ViewModelProvidersenza una fabbrica personalizzata su piattaforme non JVM comporterà unUnsupportedOperationException. Sulle piattaforme JVM, la compatibilità viene mantenuta utilizzando il costruttore ViewModel senza argomenti se non viene fornita una factory personalizzata.
- viewModelScopeverrà eseguito il fallback a un- EmptyCoroutineContextnelle piattaforme in cui- Dispatchers.Mainnon è disponibile (ad es. Linux).
Artefatti interessati:
- lifecycle-viewmodelsposta la maggior parte delle API su- commone supporta JVM e iOS oltre ad Android.
- lifecycle-viewmodel-ktxora è vuoto e tutte le API sono state spostate in- lifecycle-viewmodel.
- lifecycle-viewmodel-composesposta tutte le API su- commone spedisce un artefatto Android, in linea con il supporto multipiattaforma di- androidx.compose.
Modifiche al comportamento
- InitializerViewModelFactory(inclusa la funzione di creazione- viewModelFactory) ora genererà un errore- IllegalArgumentExceptionse è già stato aggiunto un- initializercon lo stesso- clazz: KClass<VM : ViewModel>. (Ic3a36)
Problemi noti
- lifecycle-*:2.8.0richiede una versione minima di Compose 1.7.0-alpha05 (b/336842920).
Versione 2.8.0-rc01
1° maggio 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 è stato rilasciato. La versione 2.8.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui il profilo di base per le classi lifecycle-commonnon veniva pacchettizzato correttamente. Ora sono inclusi nell'AARlifecycle-runtime. (aosp/3038274, b/322382422)
- È stata corretta una modifica involontaria dell'ordine di cancellazione delle istanze AutoCloseableassociate a un ViewModel: è stato ripristinato l'ordine precedente diaddCloseable(String, AutoCloseable), poiaddClosable(AutoCloseable)e infineonCleared(). (aosp/3041632)
- Migliora il comportamento di creazione predefinito per viewModelScopeper gli ambienti desktop nativi e JVM. (aosp/3039221)
Contributo esterno
- Grazie a Victor Kropp per aver migliorato il controllo del thread principale su JVM Desktop. (aosp/3037116)
Versione 2.8.0-beta01
17 aprile 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01 è stato rilasciato. La versione 2.8.0-beta01 contiene questi commit.
Nuove funzionalità
- L'artefatto lifecycle-runtime-composeora è compatibile con Kotlin Multiplatform, il cui codice è stato spostato incommone viene fornito un artefatto Android, in linea con il supporto multipiattaforma perandroidx.compose. (If7a71, I4f4a0, b/331769623)
Versione 2.8.0-alpha04
3 aprile 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 è stato rilasciato. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'artefatto lifecycle-viewmodel-composeora è compatibile con Kotlin Multiplatform, il cui codice è stato spostato incommon. Inoltre, viene fornito un artefatto Android, in linea con il supporto multipiattaforma diandroidx.compose. Per adattarsi a questa modifica, il metodoviewModelcomposable ora accetta unKClassoltre a unjava.lang.Class. (b/330323282)
Correzioni di bug
- NullSafeMutableLiveDataè stato sottoposto a refactoring per evitare molti falsi positivi. (I2d8c1, Iafb18, I03463, I7ecef)
Aggiornamento delle dipendenze
- L'artefatto lifecycle-viewmodel-composeora dipende da Compose 1.6.0.
- Il ciclo di vita ora dipende da Profile Installer 1.3.1.
Versione 2.8.0-alpha03
20 marzo 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 è stato rilasciato. La versione 2.8.0-alpha03 contiene questi commit.
Nuove funzionalità
- ViewModel.viewModelScopeè ora un parametro del costruttore di cui è possibile eseguire l'override, il che ti consente di inserire il tuo dispatcher e- SupervisorJob()o di eseguire l'override del valore predefinito utilizzando- backgroundScopedisponibile in- 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) }
Compatibilità multipiattaforma Kotlin
L'artefatto lifecycle-viewmodel e le API come ViewModel, ViewModelStore, ViewModelStoreOwner e ViewModelProvider ora vengono spediti in artefatti compatibili con Kotlin Multiplatform. (b/214568825)
Per adattarsi a questa modifica, i metodi come quelli su ViewModelProvider che richiedevano un java.lang.Class<T> ora hanno un metodo equivalente che richiede un kotlin.reflect.KClass<T>.
La compatibilità binaria su Android è stata mantenuta, ma ci sono alcune modifiche degne di nota se si confronta la superficie dell'API Android con la superficie dell'API comune:
- La creazione di un'istanza ViewModelProviderora viene eseguita tramite i metodiViewModelProvider.create()anziché chiamando direttamente il relativo costruttore.
- ViewModelProvider.NewInstanceFactorye- ViewModelProvider.AndroidViewModelFactorysono disponibili solo su Android.- Si consiglia di estendere le fabbriche personalizzate da ViewModelProvider.Factorye utilizzare il metodocreateche accetta unCreationExtraso utilizzare il DSL KotlinviewModelFactory.
 
- Si consiglia di estendere le fabbriche personalizzate da 
- L'utilizzo di ViewModelProvidersenza una fabbrica personalizzata su piattaforme non JVM comporterà unUnsupportedOperationException. Sulle piattaforme JVM, la compatibilità viene mantenuta utilizzando il costruttore ViewModel senza argomenti se non viene fornita una factory personalizzata.
- viewModelScopeverrà eseguito il fallback a un- EmptyCoroutineContextnelle piattaforme in cui- Dispatchers.Mainnon è disponibile (ad es. Linux).
Modifiche al comportamento
- InitializerViewModelFactory(inclusa la funzione di creazione- viewModelFactory) ora genererà un errore- IllegalArgumentExceptionse è già stato aggiunto un- initializercon lo stesso- clazz: KClass<VM : ViewModel>. (Ic3a36)
Correzioni di bug
- ViewModel.getCloseableora gestisce le chiavi duplicate: se- keyha già una risorsa- AutoCloseableassociata, la vecchia risorsa verrà sostituita e chiusa immediatamente. (Ibeb67)
- L'accesso a viewModelScopedi unViewModelora è thread-safe. (If4766, b/322407038)
Contributo esterno
- LocalLifecycleOwnerè stato spostato da Compose UI a lifecycle-runtime-compose in modo che le relative API helper basate su Compose possano essere utilizzate al di fuori di Compose UI. Grazie a Jake Wharton per il suo contributo. (I6c41b, b/328263448)
Versione 2.8.0-alpha02
21 febbraio 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 è stato rilasciato. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Sono state aggiunte le API dropUnlessResumededropUnlessStarted, che consentono di eliminare i clic o altri eventi che si verificano anche dopo cheLifecycleOwnerè sceso al di sotto del valoreLifecycle.Statespecificato. Ad esempio, può essere utilizzato con Navigation Compose per evitare la gestione degli eventi di clic dopo l'inizio di una transizione a un'altra schermata:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Conversioni Kotlin
- ViewModelè ora scritto in Kotlin (I16f26, b/214568825)
- Le estensioni Kotlin lifecycle-viewmodel-ktxsono state spostate nel modulo del ciclo di vita di base. (Id787b, b/274800183)
- Le estensioni Kotlin lifecycle-runtime-ktxsono state spostate nel modulo del ciclo di vita di base. (Ic3686, b/274800183)
- Le estensioni Kotlin lifecycle-livedata-core-ktxsono state spostate nel modulo del ciclo di vita di base. (I54a3d, b/274800183)
Compatibilità multipiattaforma Kotlin
- Le API del ciclo di vita principali in Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventeLifecycleRegistryora vengono fornite in artefatti compatibili con Kotlin Multiplatform. (b/317249252)
Modifiche alle API
- La chiamata di LifecycleStartEffecteLifecycleResumeEffectsenza una chiave ora genera un errore, seguendo la stessa convenzione dell'APIDisposableEffectche queste API rispecchiano. (Ib0e0c, b/323518079)
- ViewModelora utilizza- AutoCloseableanziché- Closeable. Si tratta di una modifica compatibile con le versioni precedenti. (I27f8e, b/214568825)
- LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)deprecato a favore di- LiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
Contributo esterno
- Grazie a Ivan Matkov di Jetbrains per aver contribuito a trasferire Lifecycle su Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Versione 2.8.0-alpha01
24 gennaio 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 è stato rilasciato. La versione 2.8.0-alpha01 contiene questi commit.
Nuove funzionalità
- ViewModelora supporta l'aggiunta di oggetti- Closeablecon un- keyche consente di recuperarli tramite- getCloseable(). (I3cf63)
Versione 2.7
Versione 2.7.0
10 gennaio 2024
androidx.lifecycle:lifecycle-*:2.7.0 è stato rilasciato. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
- TestLifecycleOwnerora include una funzione di sospensione- setCurrentState()che garantisce che la modifica dello stato e tutti i callback- LifecycleObservervengano completati prima di tornare. In particolare, a differenza dell'impostazione diretta della proprietà- currentState, questa non utilizza- runBlocking, il che la rende sicura da usare all'interno di una coroutine come quella fornita da- runTest.
- Le estensioni LiveDatadimapeswitchMapora rispecchiano il comportamento didistinctUntilChanged: seLiveDataha un valorevalueimpostato, la funzionemap/switchMapverrà chiamata immediatamente per compilare il valorevaluedell'LiveDatarestituito. In questo modo, il valore iniziale verrà impostato nell'ambito della prima composizione (se utilizzato conobserveAsState()), ma non cambia il comportamento di osservazione: gli aggiornamenti dei valori dell'origineLiveDataverranno applicati solo dopo l'inizio dell'osservazione diLiveData.
- Questa release corregge un problema per cui SavedStateHandlenon ripristinava correttamente le classiParcelablepersonalizzate dopo l'interruzione e la ricreazione del processo. A causa delle informazioni sul tipo perse dal framework Android, gli array di Parcelable personalizzati richiedono un lavoro aggiuntivo (creazione manuale di un array tipizzato del tipo corretto) e la documentazione suget,getLiveDataegetStateFlowora evidenzia in modo specifico questa limitazione.
- Le regole di conservazione di ProGuard associate a LifecycleObserversono state rimosse. Ciò significa che il codice protetto che vuole utilizzare le API tramite reflection (ad esempio utilizzando l'annotazione@OnLifecycleEventda tempo deprecata) dovrà fornire le proprie regole di conservazione per il caso d'uso specifico.
Osservabilità degli eventi del ciclo di vita
- In alternativa all'utilizzo di un LifecycleEventObserver, ora puoi osservare unFlowdiLifecycle.Eventtramite il metodo di estensioneLifecycle.asFlow().
- Gli utenti di Jetpack Compose ora possono utilizzare LifecycleEventEffectper eseguire effetti collaterali di Compose in base aLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
- Gli utenti di Jetpack Compose possono utilizzare LifecycleStartEffecteLifecycleResumeEffectper gestire coppie di eventi: da avviato a interrotto e da ripreso a in pausa, rispettivamente. Questa API rispecchia quella presente inDisposableEffected è adatta ai casi in cui la modifica apportata quando lo stato aumenta deve essere invertita quando diminuisce.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}
Per saperne di più, consulta Eseguire il codice sugli eventi del ciclo di vita.
Osservabilità dello stato del ciclo di vita
- L'attuale Lifecycle.Statepuò ora essere osservato tramite la proprietàLifecycle.currentStateFlow, che restituisce unStateFlowin cuivalueè l'attualeLifecycle.State.
- Gli utenti di Jetpack Compose possono utilizzare l'estensione Lifecycle.currentStateAsState()per esporre direttamenteLifecycle.StatecomeStatedi Compose. È equivalente (e un'alternativa più breve) alifecycle.currentStateFlow.collectAsState().
Per saperne di più, consulta Raccogliere lo stato del ciclo di vita con i flussi.
Versione 2.7.0-rc02
13 dicembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02 è stato rilasciato. La versione 2.7.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui SavedStateHandlenon ripristinava correttamente le classiParcelablepersonalizzate dopo l'interruzione e la ricreazione del processo. A causa delle informazioni sul tipo perse dal framework Android, gli array di Parcelable personalizzati richiedono un lavoro aggiuntivo (creazione manuale di un array tipizzato del tipo corretto) e la documentazione suget,getLiveDataegetStateFlowora evidenzia in modo specifico questa limitazione. (I0b55a)
Versione 2.7.0-rc01
15 novembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 è stato rilasciato. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- LifecycleStartEffecte- LifecycleResumeEffectora eliminano e ricreano correttamente il blocco degli effetti se viene modificato- LifecycleOwner. (Ia25c6)
Versione 2.7.0-beta01
1° novembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01 viene rilasciato senza modifiche. La versione 2.7.0-beta01 contiene questi commit.
- Aumento della versione beta, nessuna modifica importante a questa versione.
Versione 2.7.0-alpha03
18 ottobre 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 è stato rilasciato. La versione 2.7.0-alpha03 contiene questi commit.
Nuove funzionalità
- lifecycle-runtime-testingora contiene un nuovo controllo Lint per evitare di impostare- Lifecycle.Statedi- TestLifecycleOwnerutilizzando il campo- currentStateall'interno di una coroutine. Il controllo Lint ora suggerisce la sospensione di- setCurrentState, che consente di impostare- Lifecycle.Statesenza blocchi. (Icf728, b/297880630)
Correzioni di bug
- È stato risolto un problema con LiveData.switchMapper cui la restituzione della stessa istanza diLiveDatasia nella chiamata iniziale che in una chiamata successiva impediva l'aggiunta dell'istanza diLiveDatacome origine. (Ibedcba7)
Versione 2.7.0-alpha02
6 settembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 è stato rilasciato. La versione 2.7.0-alpha02 contiene questi commit.
Nuove funzionalità
- TestLifecycleOwnerora include la funzione di sospensione- setCurrentState()per dare agli utenti la possibilità di utilizzare- TestLifecycleOwnerall'interno di una coroutine come quella fornita da- runTest. (I329de, b/259344129)
Modifiche alle API
- Tutti i file dei moduli lifecycle-livedata-ktxsono stati spostati nel modulo principalelifecycle-livedata. (I10c6f, b/274800183)
Modifiche al comportamento
- Le estensioni LiveData.map()eLiveData.switchMap()ora impostanovaluedelLiveDatarestituito se ilLiveDataprecedente ha un valore impostato, garantendo che l'utilizzo di LiveData risultante in Jetpack Compose abbia lo stato corretto nella composizione iniziale. (I91d2b, b/269479952)
- L'addCloseable()diViewModelora chiude immediatamente l'Closeablese l'ViewModelha già ricevuto una chiamata aonCleared(). (I4712e, b/280294730)
Correzioni di bug
- Da Ciclo di vita 2.6.2: è stato risolto un problema per cuiSavedStateHandlenon veniva ripristinato correttamente dopo l'interruzione del processo se lo stato veniva ripristinato,save()veniva chiamato senza salvare effettivamente lo stato nelSavedStateRegistryprincipale e poi lo stato veniva ripristinato di nuovo. In questo modo viene corretta l'interazione trarememberSaveableeNavHostdi Navigation Compose. (aosp/2729289)
Versione 2.7.0-alpha01
26 luglio 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 è stato rilasciato. La versione 2.7.0-alpha01 contiene questi commit.
Modifiche alle API
- Lifecycle.Stateora è osservabile tramite- Lifecycle.currentStateFlow, che restituisce un- StateFlowin cui- valueè l'attuale- Lifecycle.State. (Ib212d, b/209684871)
- Ora i Lifecycle.Eventpossono essere osservati comeFlowconLifecycle.asFlow().(If2c0f, b/176311030)
- È stata aggiunta l'API LifecycleResumeEffectper eseguire iSideEffectdi Compose in base ai callback degli eventiLifecycle.Event.ON_RESUMEeLifecycle.Event.ON_PAUSE. (I60386, b/235529345)
- È stata aggiunta l'API LifecycleStartEffectper eseguireSideEffectin base ai callback degli eventiLifecycle.Event.ON_STARTeLifecycle.Event.ON_STOP. (I5a8d1, b/235529345)
- È stata aggiunta l'API LifecycleEventEffectper eseguireSideEffectdi Compose in base aLifecycle.Event. (Ic9794, b/235529345)
- L'estensione Lifecycle.collectAsState()è stata aggiunta per esporre direttamenteLifecycle.StatecomeStatedi Compose. È equivalente (e un'alternativa più breve) alifecycle.currentStateFlow.collectAsState(). (I11015, b/235529345)
Correzioni di bug
- L'estensione LiveData.distinctUntilChanged()ora imposta ilvaluedelLiveDatarestituito se ilLiveDataprecedente ha un valore impostato. Ciò non modifica il comportamento di osservazione: i valori aggiornati della sorgenteLiveDataverranno applicati solo dopo che avrai iniziato a osservareLiveDatarestituito dadistinctUntilChanged(). (Ib482f)
- Le regole di conservazione di ProGuard associate a LifecycleObserversono state rimosse. Ciò significa che il codice protetto che vuole utilizzare le API tramite reflection dovrà fornire le proprie regole di conservazione per il caso d'uso specifico. (Ia12fd)
Versione 2.6
Versione 2.6.2
6 settembre 2023
androidx.lifecycle:lifecycle-*:2.6.2 è stato rilasciato. La versione 2.6.2 contiene questi commit.
Correzioni di bug
- È stato corretto un problema a causa del quale SavedStateHandlenon veniva ripristinato correttamente dopo l'interruzione del processo se lo stato veniva ripristinato,save()veniva chiamato senza salvare effettivamente lo stato nelSavedStateRegistryprincipale e poi lo stato veniva ripristinato di nuovo. In questo modo viene corretta l'interazione trarememberSaveableeNavHostdi Navigation Compose. (aosp/2729289)
Versione 2.6.1
22 marzo 2023
androidx.lifecycle:lifecycle-*:2.6.1 è stato rilasciato. La versione 2.6.1 contiene questi commit.
Aggiornamenti delle dipendenze
- lifecycle-viewmodel-savedstateora dipende da SavedState- 1.2.1. (cd7251)
- Il ciclo di vita ora dipende da ProfileInstaller 1.3.0. (f9d30b)
Versione 2.6.0
8 marzo 2023
androidx.lifecycle:lifecycle-*:2.6.0 è stato rilasciato. La versione 2.6.0 contiene questi commit.
Modifiche importanti dalla versione 2.5.0
- LiveDataora include una nuova proprietà- isInitializedche indica se è mai stato impostato un valore esplicito per- LiveData, consentendoti di distinguere tra- liveData.valueche restituisce- nullperché non è mai stato impostato alcun valore o un valore- nullesplicito.
- MediatorLiveDataora include un costruttore per impostare un valore iniziale.
- È stata aggiunta una nuova estensione il giorno StateFlowe il giornoFlowdicollectAsStateWithLifecycle()che raccoglie i dati dai flussi e ne rappresenta l'ultimo valore come stato di composizione in modo consapevole del ciclo di vita.
- I metodi Lifecycle.launchWhenXeLifecycle.whenXsono stati ritirati perché l'utilizzo di un dispatcher di pausa può comportare uno spreco di risorse in alcuni casi. Ti consigliamo di utilizzareLifecycle.repeatOnLifecycle. Per ulteriori informazioni sulla sospensione una tantum del lavoro, consulta questa spiegazione sul motivo per cui questa operazione è intrinsecamente pericolosa.
- Conversione Kotlin: un numero elevato di classi del ciclo di vita è stato convertito in Kotlin. Tutti i corsi convertiti mantengono la compatibilità binaria con le versioni precedenti. Le seguenti classi hanno modifiche incompatibili con l'origine per le classi scritte in Kotlin: ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
La tabella seguente fornisce le conversioni di origine per la nuova versione del ciclo di vita.
| Ciclo di vita 2.5 | Lifecycle 2.5 (KTX) | Ciclo di vita 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 | 
- L'annullabilità del metodo onChangeddi unObservercreato in Kotlin ora corrisponde all'annullabilità del tipo generico. Se vuoi cheObserver.onChanged()accetti un tipo Nullable, devi creare un'istanza diObservercon un tipo Nullable.
- Anche queste classi sono state convertite in Kotlin, ma rimangono compatibili con l'origine: DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchereProcessLifecycleOwner
Versione 2.6.0-rc01
22 febbraio 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 è stato rilasciato. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- L'estensione LiveData.distinctUntilChanged()ora imposta ilvaluedelLiveDatarestituito se ilLiveDataprecedente ha un valore impostato. Ciò non modifica il comportamento di osservazione: i valori aggiornati della sorgenteLiveDataverranno applicati solo dopo che avrai iniziato a osservareLiveDatarestituito dadistinctUntilChanged(). (Ib482f)
Versione 2.6.0-beta01
8 febbraio 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 è stato rilasciato. La versione 2.6.0-beta01 contiene questi commit.
Conversioni Kotlin
- LifecycleOwnerè ora scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devono eseguire l'override della proprietà- lifecycleanziché implementare la funzione- getLifecycle()precedente. (I75b4b, b/240298691)
- ViewModelStoreOwnerè ora in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devono eseguire l'override della proprietà- viewModelStoreanziché implementare la funzione- getViewModelStore()precedente. (I86409, b/240298691)
- L'estensione Kotlin su LifecycleOwnerche fornisce il campolifecycleScopeè stata spostata nell'artefattolifecycle-commondalifecycle-runtime-ktx. (I41d78, b/240298691)
- L'estensione Kotlin su Lifecycleche fornisce il campocoroutineScopeè stata spostata nell'artefattolifecycle-commondalifecycle-runtime-ktx. (Iabb91, b/240298691)
Versione 2.6.0-alpha05
25 gennaio 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 è stato rilasciato. La versione 2.6.0-alpha05 contiene questi commit.
Conversioni Kotlin
- Transformationsè ora scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin che utilizzavano direttamente una sintassi come- Transformations.map. Il codice Kotlin deve ora utilizzare la sintassi del metodo di estensione Kotlin, che in precedenza era disponibile solo quando si utilizzava- lifecycle-livedata-ktx. Quando si utilizza il linguaggio di programmazione Java, le versioni di questi metodi che accettano un metodo- androidx.arch.core.util.Functionsono obsolete e sostituite dalle versioni che accettano un- Function1Kotlin. Questa modifica mantiene la compatibilità binaria. (I8e14f)
- ViewTreeViewModelStoreOwnerè ora scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devi importare e utilizzare direttamente i metodi di estensione Kotlin su- Viewdi- androidx.lifecycle.setViewTreeViewModelStoreOwnere- androidx.lifecycle.findViewTreeViewModelStoreOwnerper impostare e trovare un proprietario impostato in precedenza. È compatibile a livello binario e rimane compatibile a livello di codice sorgente per le implementazioni scritte nel linguaggio di programmazione Java. (Ia06d8, Ib22d8, b/240298691)
- L'interfaccia HasDefaultViewModelProviderFactoryè ora scritta in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin, che ora devono eseguire l'override delle proprietàdefaultViewModelProviderFactoryedefaultViewModelCreationExtrasanziché implementare le funzioni corrispondenti precedenti. (Iaed9c, b/240298691)
- Observerè ora scritto in Kotlin. Il suo metodo- onChanged()ora utilizza il nome- valueper il parametro. (Iffef2, I4995e, b/240298691)
- AndroidViewModel,- AbstractSavedStateViewModelFactory,- LifecycleService,- ServiceLifecycleDispatchere- ProcessLifecycleOwnersono ora scritti in Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Versione 2.6.0-alpha04
11 gennaio 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 è stato rilasciato. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- LiveDataora include una nuova proprietà- isInitializedche indica se è mai stato impostato un valore esplicito per- LiveData, consentendoti di distinguere tra- liveData.valueche restituisce- nullperché non è mai stato impostato alcun valore o un valore- nullesplicito. (Ibd018)
Modifiche alle API
- Le API collectAsStateWithLifecycle()dilifecycle-runtime-composenon sono più in stato sperimentale. (I09d42, b/258835424)
- I metodi Lifecycle.launchWhenXeLifecycle.whenXsono stati ritirati perché l'utilizzo di un dispatcher di pausa può comportare uno spreco di risorse in alcuni casi. Ti consigliamo di utilizzareLifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
Conversioni Kotlin
- ViewTreeLifecycleOwnerè ora scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devi importare e utilizzare direttamente i metodi di estensione Kotlin su- Viewdi- androidx.lifecycle.setViewTreeLifecycleOwnere- androidx.lifecycle.findViewTreeLifecycleOwnerper impostare e trovare un proprietario impostato in precedenza. Questa sostituisce l'estensione Kotlin precedente in- lifecycle-runtime-ktx. È compatibile a livello binario e rimane compatibile a livello di codice sorgente per le implementazioni scritte nel linguaggio di programmazione Java. (I8a77a, I5234e, b/240298691)
- LiveDataReactiveStreamsè ora scritto in Kotlin. Le estensioni Kotlin precedentemente presenti in- lifecycle-reactivestreams-ktxsono state spostate nel modulo- lifecycle-reactivestreamse sono diventate la superficie principale per il codice scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per il codice scritto in Kotlin se non utilizzavi già le API dei metodi di estensione Kotlin. (I2b1b9, I95d22, b/240298691)
- DefaultLifecycleObserver,- LifecycleEventObserver,- Lifecycle,- LifecycleRegistry,- LifecycleObservere- ViewModelStoresono ora scritti in Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Correzioni di bug
- SavedStateHandlenon si arresta più in modo anomalo con un- ClassCastExceptionquando chiama- get()con il tipo di classe errato. (I6ae7c)
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 è stato rilasciato. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i vincoli tra diversi moduli del ciclo di vita non funzionavano come previsto. (I18d0d, b/249686765)
- Gli errori generati da LifecycleRegistry.moveToState()ora includono messaggi di errore più utili che informano gli sviluppatori del componente che causa l'errore. (Idf4b2, b/244910446)
Versione 2.6.0-alpha02
7 settembre 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 è stato rilasciato. La versione 2.6.0-alpha02 contiene questi commit.
Modifiche alle API
- MediatorLiveDataora include un costruttore per impostare un valore iniziale. (Ib6cc5, b/151244085)
Correzioni di bug
- Gli artefatti Lifecycleora includono vincoli che garantiscono che tutti gli artefatti del ciclo di vita interdipendenti utilizzino la stessa versione, eseguendo automaticamente l'upgrade delle altre dipendenze quando viene eseguito l'upgrade di una. b/242871265
- FlowLiveData.asFlow()ora crea un- callbackFlowanziché utilizzare la propria implementazione- Channelper garantire la sicurezza dei thread e la conservazione del contesto. (I4a8b2, b/200596935)
- La funzione FlowLiveDatadiasLiveDataora manterrà il valore iniziale di unStateFlowdurante la creazione del nuovo oggettoLiveData. (I3f530, b/157380488)
- Da Ciclo di vita 2.5.1: le implementazioni personalizzate diAndroidViewModelFactoryora chiamano correttamente la funzionecreate(modelClass)quando si utilizza il costruttore stateful conLifecycle2.4+ (I5b315, b/238011621)
Versione 2.6.0-alpha01
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 è stato rilasciato. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova estensione il giorno StateFlowe il giornoFlowdicollectAsStateWithLifecycleche raccoglie i dati dai flussi e ne rappresenta il valore più recente come stato di composizione in modo consapevole del ciclo di vita. Il flusso viene raccolto e la nuova emissione viene impostata sul valore dello stato quando il ciclo di vita si trova almeno in un determinatoLifecycle.State. Quando il ciclo di vita scende al di sotto diLifecycle.State, la raccolta del flusso si interrompe e il valore dello stato non viene aggiornato. (I1856e, b/230557927)
Versione 2.5
Versione 2.5.1
27 luglio 2022
androidx.lifecycle:lifecycle-*:2.5.1 è stato rilasciato. La versione 2.5.1 contiene questi commit.
Correzioni di bug
- Le implementazioni personalizzate di AndroidViewModelFactoryora chiamano correttamente la funzionecreate(modelClass)quando utilizzano il costruttore statefulAndroidViewModelFactoryconLifecycle2.4+. (I5b315, b/238011621)
Versione 2.5.0
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0 è stato rilasciato. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
- SavedStateHandleora offre un'API- getStateFlow()che restituisce un- StateFlowKotlin per monitorare le modifiche dei valori in alternativa all'utilizzo di- LiveData.
- ViewModel CreationExtras: quando scrivi un - ViewModelProvider.Factorypersonalizzato, non è più necessario estendere- AndroidViewModelFactoryo- AbstractSavedStateViewModelFactoryper accedere rispettivamente a un- Applicationo- SavedStateHandle. Questi campi vengono invece forniti a ogni sottoclasse- ViewModelProvider.Factorycome- CreationExtrastramite il nuovo overload di- create:- create(Class<T>, CreationExtras). Questi extra vengono forniti automaticamente dall'attività o dal fragment quando utilizzi rispettivamente Activity- 1.5.0e Fragment- 1.5.0.- class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
- lifecycle-viewmodelora fornisce un- viewModelFactoryDSL Kotlin che ti consente di definire- ViewModelProvider.Factoryin termini di uno o più inizializzatori lambda, uno per ogni classe- ViewModelspecifica supportata dalla tua factory personalizzata, utilizzando- CreationExtrascome origine dati principale.- 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-composeora offre un'API- viewModel()che accetta una factory lambda per creare un'istanza- ViewModelsenza richiedere la creazione di un- ViewModelProvider.Factorypersonalizzato.- // 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) }
- Integrazione di SavedStateHandle Compose Saver: l'artefatto - lifecycle-viewmodel-composeora contiene nuove API sperimentali in- SavedStateHandle.saveableche consentono un comportamento simile a- rememberSaveablesupportato da- SavedStateHandledi un oggetto `ViewModel`.- class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
- Sono state aggiunte un'API - addCloseable()e un nuovo overload del costruttore che consentono di aggiungere uno o più oggetti- Closeableall'- ViewModelche verrà chiuso quando l'- ViewModelviene cancellato senza richiedere alcun intervento manuale in- onCleared().- Ad esempio, per creare un ambito di coroutine che puoi inserire in un ViewModel, ma controllare tramite i test, puoi creare un - CoroutineScopeche implementa- Closeable:- class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }- che può essere utilizzato nel costruttore - ViewModelmantenendo la stessa durata di- viewModelScope:- class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Modifiche al funzionamento
- Il tentativo di spostare Lifecycle.StatedaINITIALIZEDaDESTROYEDora genererà sempre unIllegalStateExceptionindipendentemente dal fatto cheLifecycleabbia un osservatore collegato.
- LifecycleRegistryora cancellerà i suoi osservatori quando raggiunge lo stato- DESTROYED.
Versione 2.5.0-rc02
15 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 è stato rilasciato. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
- ViewModelProvidernon si arresterà più in modo anomalo quando si combinano versioni precedenti delle dipendenze del ciclo di vita compileOnly con le versioni 2.5 e successive. (I81a66, b/230454566)
Versione 2.5.0-rc01
11 maggio 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01 è stato rilasciato. La versione 2.5.0-rc01 contiene questi commit.
Correzioni di bug
- MediatorLiveData.addSource()ora genera un- NullPointerExceptionquando viene passata un'origine- nullanziché propagare l'origine- nullagli osservatori.(Ibd0fb, b/123085232)
Versione 2.5.0-beta01
20 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01 è stato rilasciato. La versione 2.5.0-beta01 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti delegati della proprietà SavedStateHandle.saveableper utilizzare i nomi delle proprietà come chiavi per rendere persistente lo stato inSavedStateHandle(I8bb86, b/225014345)
Correzioni di bug
- È stato risolto un problema per cui l'annidamento di un NavHostall'interno di un altroNavHostin una scheda di navigazione inferiore non principale comportava unIllegalStateExceptionquando si utilizzavano più back stack. (I11bd5, b/228865698)
Versione 2.5.0-alpha06
6 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 è stato rilasciato. La versione 2.5.0-alpha06 contiene questi commit.
Nuove funzionalità
- Aggiungi l'overload sperimentale di MutableStateaSavedStateHandle.saveableper parità conrememberSaveable(I38cfe, b/224565154)
Modifiche alle API
- CreationExtrasora è astratto anziché sigillato. (Ib8a7a)
Correzioni di bug
- È stato corretto un errore IllegalStateException: Already attached to lifecycleOwnercausato daSavedStateHandleController. (I7ea47, b/215406268)
Versione 2.5.0-alpha05
23 marzo 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 è stato rilasciato. La versione 2.5.0-alpha05 contiene questi commit.
Nuove funzionalità
- Il modulo lifecycle-viewmodel-composeora fornisceSavedStateHandleSaver, un'API sperimentale che garantisce che i valori in unSavedStateHandlesiano integrati correttamente con lo stesso stato dell'istanza salvata utilizzato darememberSaveable. (Ia88b7, b/195689777)
Modifiche alle API
- È stato risolto un problema di compatibilità con Lifecycle 2.3 e versioni successive di Lifecycle in Java. (I52c8a, b/219545060)
Correzioni di bug
- SavedStateViewFactoryora supporta l'utilizzo di- CreationExtrasanche se è stato inizializzato con un- SavedStateRegistryOwner. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)
Versione 2.5.0-alpha04
9 marzo 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 è stato rilasciato. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche alle API
- SavedStateHandleora offre un'API- getStateFlow()che restituisce un- StateFlowKotlin per monitorare le modifiche dei valori come alternativa all'utilizzo di- LiveData. (Iad3ab, b/178037961)
Versione 2.5.0-alpha03
23 febbraio 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 è stato rilasciato. La versione 2.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- È stata aggiunta un'API addCloseable()e un nuovo sovraccarico del costruttore che consente di aggiungere uno o più oggettiCloseableaViewModelche verrà chiuso quandoViewModelviene cancellato senza richiedere alcun intervento manuale inonCleared(). (I55ea0)
- lifecycle-viewmodelora fornisce un- InitializerViewModelFactoryche ti consente di aggiungere lambda per la gestione di particolari classi- ViewModel, utilizzando- CreationExtrascome origine dati principale. (If58fc, b/216687549)
- lifecycle-viewmodel-composeora offre un'API- viewModel()che accetta una factory lambda per creare un'istanza- ViewModelsenza richiedere la creazione di un- ViewModelProvider.Factorypersonalizzato. (I97fbb, b/216688927)
Modifiche alle API
- Ora puoi creare un ViewModelconCreationExtrastramitelifecycle-viewmodel-compose. (I08887, b/216688927)
Modifiche al funzionamento
- Il tentativo di spostare Lifecycle.StatedaINITIALIZEDaDESTROYEDora genererà sempre unIllegalStateExceptionindipendentemente dal fatto cheLifecycleabbia un osservatore allegato. (I7c390, b/177924329)
- LifecycleRegistryora cancellerà i propri osservatori quando raggiungerà lo stato- DESTROYED. (I4f8dd, b/142925860)
Versione 2.5.0-alpha02
9 febbraio 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 è stato rilasciato. La versione 2.5.0-alpha02 contiene questi commit.
Modifiche alle API
- SavedStateHandlee- SavedStateViewModelFactorysono stati convertiti in Kotlin. Ciò ha migliorato l'annullabilità dei generici in entrambe le classi. (Ib6ce2, b/216168263, I9647a, b/177667711)
- Il parametro della funzione LiveDataswitchMapora può avere un output Nullable. (I40396, b/132923666)
- Le estensioni LiveData-ktx ora sono annotate con@CheckResultper garantire che il risultato venga utilizzato quando vengono chiamate queste funzioni. (Ia0f05, b/207325134)
Modifiche al funzionamento
- Ora SavedStateHandlememorizza correttamente defaultValue quando non esiste alcun valore per la chiave specificata. (I1c6ce, b/178510877)
Correzioni di bug
- Da Lifecycle 2.4.1: aggiornamento dilifecycle-processin modo che dipenda da Startup 1.1.1 per garantire che le correzioni che impediscono aProcessLifecycleInitializerdi generare unStartupExceptionsiano disponibili per impostazione predefinita. (Ib01df, b/216490724)
- Ora viene visualizzato un messaggio di errore migliorato quando le classi AndroidViewModelpersonalizzate hanno parametri nell'ordine errato e si tenta di creare unViewModel. (I340f7, b/177667711)
- Ora puoi creare un modello di visualizzazione tramite CreationExtrasutilizzandoAndroidViewModelFactorysenza impostare un'applicazione. (I6ebef, b/217271656)
Versione 2.5.0-alpha01
26 gennaio 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 è stato rilasciato. La versione 2.5.0-alpha01 contiene questi commit.
ViewModel CreationExtras
Con questa release, stiamo gettando le basi per la ristrutturazione della modalità di creazione di un ViewModel. Anziché un insieme rigido di sottoclassi di ViewModelProvider.Factory che aggiungono ciascuna funzionalità aggiuntive (consentendo un parametro del costruttore Application tramite AndroidViewModelFactory, un parametro del costruttore SavedStateHandle tramite SavedStateViewModelFactory e AbstractSavedStateViewModelFactory e così via), stiamo passando a un mondo di fabbriche stateless che si basano su un nuovo concetto, CreationExtras. (Ia7343, b/188691010, b/188541057)
Con questa modifica, ViewModelProvider non effettua più chiamate dirette al metodo create(Class<T>) precedente di ViewModelProvider.Factory. Chiama invece un nuovo sovraccarico di create: create(Class<T>, CreationExtras). Ciò significa che qualsiasi implementazione diretta dell'istanza ViewModelProvider.Factory ora ha accesso a ciascuno di questi nuovi CreationExtras:
- ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: questo- Stringfornisce l'accesso alla chiave personalizzata che hai passato a- ViewModelProvider.get().
- ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYfornisce l'accesso al corso- Application.
- SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYfornisce l'accesso a- SavedStateRegistryOwnerutilizzato per creare questo ViewModel.
- SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYfornisce l'accesso a- ViewModelStoreOwnerutilizzato per creare questo ViewModel.
- SavedStateHandleSupport.DEFAULT_ARGS_KEYfornisce l'accesso all'- Bundledegli argomenti da utilizzare per costruire un- SavedStateHandle.
Questi extra vengono forniti per impostazione predefinita quando utilizzi Attività 1.5.0-alpha01, Frammento 1.5.0-alpha01 e Navigazione 2.5.0-alpha01. Se utilizzi una versione precedente di queste librerie, il tuo CreationExtras sarà vuoto. Tutte le sottoclassi esistenti di ViewModelProvider.Factory sono state riscritte per supportare sia il percorso di creazione legacy utilizzato dalle versioni precedenti di queste librerie sia il percorso CreationExtras che verrà utilizzato in futuro.
Questi CreationExtras ti consentono di creare un ViewModelProvider.Factory che trasmette solo le informazioni necessarie a ogni ViewModel senza fare affidamento su una gerarchia rigida di sottoclassi Factory:
class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}
Utilizziamo la funzione di estensione Kotlin createSavedStateHandle() su CreationExtras da SavedStateHandleSupport per creare un SavedStateHandle solo per il ViewModel che ne ha bisogno. (Ia6654, b/188541057)
I CreationExtras personalizzati possono essere forniti sostituendo getDefaultViewModelCreationExtras() in ComponentActivity o Fragment, rendendoli così disponibili per il ViewModelProvider.Factory personalizzato come forma integrata di inserimento assistito. Questi extra verranno resi disponibili automaticamente alla tua Factory personalizzata se utilizzati direttamente con ViewModelProvider o se utilizzi le estensioni delle proprietà Kotlin by viewModels() e by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)
Correzioni di bug
- È stato risolto un problema per cui il valore predefinito fornito
a un SavedStateHandleveniva visualizzato di nuovo dopo l'interruzione e la ricreazione del processo, anche se era stato rimosso specificamente daSavedStateHandle. Di conseguenza,SavedStateHandlenon unirà più i valori predefiniti e quelli ripristinati, ma utilizzerà solo i valori ripristinati come fonte di verità. (I53a4b)
Versione 2.4
Versione 2.4.1
9 febbraio 2022
androidx.lifecycle:lifecycle-*:2.4.1 è stato rilasciato. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Portato da Lifecycle 2.5.0-alpha01: è stato risolto un problema per cui il valore predefinito fornito a unSavedStateHandleveniva visualizzato di nuovo dopo l'interruzione e la ricreazione del processo, anche se era stato rimosso in modo specifico dalSavedStateHandle. Di conseguenza,SavedStateHandlenon unirà più i valori predefiniti e quelli ripristinati, ma utilizzerà solo i valori ripristinati come fonte di verità. (I53a4b)
- lifecycle-processora dipende da Androidx Startup 1.1.1, che ha corretto una regressione in cui l'utilizzo di- ProcessLifecycleInitializercausava un- StartupException. (b/216490724)
Versione 2.4.0
27 ottobre 2021
androidx.lifecycle:lifecycle-*:2.4.0 è stato rilasciato. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
- @OnLifecycleEventè stato deprecato. Utilizza invece- LifecycleEventObservero- DefaultLifecycleObserver.
- È stata aggiunta la libreria androidx.lifecycle:lifecycle-viewmodel-compose. FornisceviewModel()componibili eLocalViewModelStoreOwner.- Modifica che causa interruzione della compatibilità con il codice sorgente: ViewModelProviderè stato riscritto in Kotlin. Il metodoViewModelProvider.Factory.createnon consente più i generici annullabili.
 
- Modifica che causa interruzione della compatibilità con il codice sorgente: 
- Sono state aggiunte nuove API coroutine a androidx.lifecycle:lifecycle-runtime-ktx:
- Lifecycle.repeatOnLifecycle, API che esegue un blocco di codice in una coroutine quando il ciclo di vita si trova almeno in un determinato stato. Il blocco verrà annullato e riavviato man mano che il ciclo di vita entra ed esce dallo stato di destinazione.
- Flow.flowWithLifecycle, API che emette valori dal flusso upstream quando il ciclo di vita si trova almeno in un determinato stato.
- DefaultLifecycleObserverè stato spostato da- lifecycle.lifecycle-common-java8a- lifecycle.lifecycle-common.- lifecycle.lifecycle-common-java8non fornisce più funzionalità aggiuntive rispetto a- lifecycle.lifecycle-common, pertanto la dipendenza da questo può essere sostituita da- lifecycle.lifecycle-common.
- L'API non coroutine di lifecycle-viewmodel-ktxè stata spostata nel modulolifecycle-viewmodel.
- lifecycle-processora utilizza- androidx.startupper inizializzare- ProcessLifecycleOwner.- In precedenza, questa operazione veniva eseguita da - androidx.lifecycle.ProcessLifecycleOwnerInitializer.- Se in passato hai utilizzato - tools:node="remove"- ContentProviderper inizializzare il ciclo di vita del processo, devi procedere nel seguente modo.- <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>- (oppure) - <!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Versione 2.4.0-rc01
29 settembre 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01 viene rilasciato senza modifiche rispetto a Lifecycle 2.4.0-beta01. La versione 2.4.0-rc01 contiene questi commit.
Versione 2.4.0-beta01
15 settembre 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01 è stato rilasciato. La versione 2.4.0-beta01 contiene questi commit.
Modifiche alle API
- @OnLifecycleEventè stato deprecato.- LifecycleEventObservero- DefaultLifecycleObserverdevono essere utilizzati al loro posto. (I5a8fa)
- DefaultLifecycleObserver è stato spostato da androidx.lifecycle.lifecycle-common-java8aandroidx.lifecycle.lifecycle-common.androidx.lifecycle.lifecycle-common-java8non fornisce più funzionalità aggiuntive rispetto aandroidx.lifecycle.lifecycle-common, pertanto la dipendenza da questo può essere sostituita daandroidx.lifecycle.lifecycle-common. (I021aa)
- L'API non coroutine di lifecycle-viewmodel-ktxè stata spostata nel modulolifecycle-viewmodel. (I6d5b2)
Contributo esterno
Versione 2.4.0-alpha03
4 agosto 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 è stato rilasciato. La versione 2.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Modifica che causa interruzioni a livello di codice sorgente: ViewModelProvider è stato riscritto in Kotlin.
  Il metodo ViewModelProvider.Factory.createnon consente più i generici che accettano valori null. (I9b9f6)
Modifiche al comportamento
- Lifecycle.repeatOnLifecycle:- blockora viene sempre richiamato in serie durante l'esecuzione ripetuta. (Ibab33)
Contributo esterno
- Grazie chao2zhang per aver corretto gli snippet di codice nella documentazione di repeatOnLifecycle. #205.
Versione 2.4.0-alpha02
16 giugno 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 è stato rilasciato. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un nuovo controllo lint RepeatOnLifecycleWrongUsagealifecycle-runtime-ktxche rileva quandorepeateOnLifecycleviene utilizzato in modo errato inonStart()oonResume(). (706078, b/187887400)
Modifiche alle API
- L'API LifecycleOwner.addRepeatingJobviene rimossa a favore diLifecycle.repeatOnLifecycleche rispetta la concorrenza strutturata ed è più facile da gestire. (I4a3a8)
- Rendi pubblico ProcessLifecycleInitializerin modo che altriandroidx.startup.Initializerpossano utilizzarli come dipendenze. (I94c31)
Correzioni di bug
- È stato risolto un problema con il controllo lint NullSafeMutableLiveDataquando il campo ha modificatori. (#147, b/183696616)
- È stato risolto un altro problema con il controllo lint NullSafeMutableLiveDataquando si utilizzano i generici. (#161, b/184830263)
Contributo esterno
- Grazie maxsav per aver migliorato il controllo lint NullSafeMutableLiveData. (#147, b/183696616)
- Grazie kozaxinan per aver migliorato il controllo lint di NullSafeMutableLiveData. (#161, b/184830263)
Versione 2.4.0-alpha01
24 marzo 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 è stato rilasciato. La versione 2.4.0-alpha01 contiene questi commit.
Modifiche al comportamento
- lifecycle-processora utilizza- androidx.startupper inizializzare- ProcessLifecycleOwner.- In precedenza, questa operazione veniva eseguita da - androidx.lifecycle.ProcessLifecycleOwnerInitializer.- Se in passato hai utilizzato - tools:node="remove"- ContentProviderper inizializzare il ciclo di vita del processo, devi procedere nel seguente modo.- <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>- (oppure) - <!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Modifiche alle API
- È stata aggiunta un'API Flow.flowWithLifecycleche emette valori dal flusso upstream quando il ciclo di vita si trova almeno in un determinato stato utilizzando l'APILifecycle.repeatOnLifecycle. Si tratta di un'alternativa alla nuova APILifecycleOwner.addRepeatinJob. (I0f4cd)
Correzioni di bug
- A partire da Lifecycle 2.3.1: la regola di linting NonNullableMutableLiveDataora può distinguere correttamente le variabili di campo con diversi valori nullabili. (b/169249668)
Lifecycle Viewmodel Compose Version 1.0.0
Versione 1.0.0-alpha07
16 giugno 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 è stato rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API che causano interruzioni
- viewModel()ora accetta un- ViewModelStoreOwnerfacoltativo, semplificando la collaborazione con proprietari diversi da- LocalViewModelStoreOwner. Ad esempio, ora puoi utilizzare- viewModel(navBackStackEntry)per recuperare un ViewModel associato a un particolare grafico di navigazione. (I2628d, b/188693123)
Versione 1.0.0-alpha06
2 giugno 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
È stato effettuato un aggiornamento per garantire la compatibilità con la versione 1.0.0-beta08 di Compose.
Versione 1.0.0-alpha05
18 maggio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
- È stato effettuato un aggiornamento per garantire la compatibilità con la versione 1.0.0-beta07di Compose.
Correzioni di bug
- I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-alpha04
7 aprile 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle dipendenze
- Questa versione consente a androidx.hilt:hilt-navigation-composeeandroidx.navigation:navigation-composedi sincronizzare le dipendenze suandroidx.compose.compiler:compiler:1.0.0-beta04eandroidx.compose.runtime:runtime:1.0.0-beta04. Per la versione 1.0.0, è necessario che il compilatore e il runtime corrispondano.
Versione 1.0.0-alpha03
10 marzo 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 è stato rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- LocalViewModelStoreOwner.currentora restituisce un- ViewModelStoreOwnernullable per determinare meglio se un- ViewModelStoreOwnerè disponibile nella composizione corrente. Le API che richiedono un- ViewModelStoreOwner, ad esempio- viewModel()e- NavHost, generano comunque un'eccezione se non è impostato un- ViewModelStoreOwner. (Idf39a)
Lifecycle-Viewmodel-Compose versione 1.0.0-alpha02
24 febbraio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 è stato rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- LocalViewModelStoreOwnerora dispone di- providesfunzioni che possono essere utilizzate con- CompositionLocalProvider, sostituendo l'API- asProvidableCompositionLocal(). (I45d24)
Lifecycle-Viewmodel-Compose versione 1.0.0-alpha01
10 febbraio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 è stato rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il componente componibile viewModel()eLocalViewModelStoreOwnersono stati spostati daandroidx.compose.ui.viewinteropa questo artefatto nel pacchettoandroidx.lifecycle.viewmodel.compose. (I7a374)
Versione 2.3.1
Lifecycle versione 2.3.1
24 marzo 2021
androidx.lifecycle:lifecycle-*:2.3.1 è stato rilasciato. La versione 2.3.1 contiene questi commit.
Correzioni di bug
- La regola di lint NonNullableMutableLiveDataora può distinguere correttamente le variabili di campo con valori nullabili diversi. (b/169249668)
Versione 2.3.0
Versione 2.3.0
10 febbraio 2021
androidx.lifecycle:lifecycle-*:2.3.0 è stato rilasciato. La versione 2.3.0 contiene questi commit.
Modifiche principali dalla versione 2.2.0
- Supporto di SavedStateHandleper le classi non serializzabili:SavedStateHandleora supporta la serializzazione differita consentendoti di chiamaresetSavedStateProvider()per una determinata chiave, fornendo unSavedStateProviderche riceverà un callback asaveState()quando aSavedStateHandleviene chiesto di salvare il proprio stato. Vedi Salvataggio di classi non serializzabili.
- Applicazione del comportamento del ciclo di vita:
- LifecycleRegistry ora applica DESTROYEDcome stato terminale.
- LifecycleRegistryora verifica che i suoi metodi vengano chiamati sul thread principale. È sempre stato un requisito per i cicli di vita di attività, frammenti e così via. L'aggiunta di osservatori da thread non principali ha causato arresti anomali difficili da rilevare in fase di runtime. Per gli oggetti- LifecycleRegistrydi proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzando- LifecycleRegistry.createUnsafe(...), ma devi assicurarti che sia in atto una sincronizzazione corretta quando si accede a questo- LifecycleRegistryda thread diversi.
 
- LifecycleRegistry ora applica 
- Helper per lo stato del ciclo di vita e gli eventi: sono stati aggiunti metodi helper statici di downFrom(State),downTo(State),upFrom(State),upTo(State)aLifecycle.Eventper generareEventdato unStatee la direzione di transizione. È stato aggiunto il metodogetTargetState()che fornisce lo statoStatea cui passerà il ciclo di vita immediatamente dopo l'eventoEvent.
- withStateAtLeast: sono state aggiunte le API- Lifecycle.withStateAtLeastche attendono uno stato del ciclo di vita ed eseguono un blocco di codice non sospensivo in modo sincrono al momento del cambio di stato, per poi riprendere con il risultato. Queste API differiscono dai metodi- when*esistenti in quanto non consentono l'esecuzione di codice di sospensione e non utilizzano un dispatcher personalizzato. (aosp/1326081)
- API ViewTree: una nuova APIViewTreeLifecycleOwner.get(View)eViewTreeViewModelStoreOwner.get(View)ti consente di recuperare rispettivamenteLifecycleOwnereViewModelStoreOwner, data un'istanzaView. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0e Fragment1.3.0e ad AppCompat 1.3.0-alpha01 o versioni successive. Le estensioni KotlinfindViewTreeLifecycleOwnerefindViewTreeViewModelStoreOwnersono disponibili rispettivamente inlifecycle-runtime-ktxelifecycle-viewmodel-ktx.
- LiveData.observe()Ritiro dell'estensione Kotlin: l'estensione Kotlin- LiveData.observe()necessaria per utilizzare la sintassi lambda è ora ritirata in quanto non è necessaria quando si utilizza Kotlin 1.4.
Versione 2.3.0-rc01
16 dicembre 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 è stato rilasciato. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- Il metodo keys()diSavedStateHandleora è coerente prima e dopo il salvataggio dello stato: ora include le chiavi utilizzate in precedenza consetSavedStateProvider(), oltre a quelle utilizzate conset()egetLiveData(). (aosp/1517919, b/174713653)
Contributo esterno
- Le API per sospendere le coroutine sensibili al ciclo di vita ora gestiscono meglio le chiamate a yield(). Grazie Nicklas Ansman Giertz. (aosp/1430830, b/168777346)
Versione 2.3.0-beta01
1° ottobre 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01 è stato rilasciato. La versione 2.3.0-beta01 contiene questi commit.
Modifiche alle API
- L'estensione Kotlin LiveData.observe()necessaria per utilizzare la sintassi lambda è ora deprecata in quanto non è necessaria quando si utilizza Kotlin 1.4. (I40d3f)
Correzioni di bug
- Esegui l'upgrade di androidx per utilizzare Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Modifiche alla documentazione
- Il generatore liveDatae la documentazioneasLiveData()sono stati aggiornati per includere i dettagli sulla modifica dei valori di timeout specificati. (aosp/1122324)
Versione 2.3.0-alpha07
19 agosto 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 è stato rilasciato. La versione 2.3.0-alpha07 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di arresto anomalo nel controllo Lint di NullSafeMutableLiveData. (aosp/1395367)
Versione 2.3.0-alpha06
22 luglio 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 è stato rilasciato. La versione 2.3.0-alpha06 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti i metodi helper statici downFrom(State),downTo(State),upFrom(State),upTo(State)aLifecycle.Eventper generareEventdato unStatee la direzione della transizione. È stato aggiunto il metodogetTargetState()che fornisce lo statoStatea cui passerà il ciclo di vita immediatamente dopo l'eventoEvent. (I00887)
- Sono state aggiunte API Lifecycle.withStateAtLeastche attendono uno stato del ciclo di vita ed eseguono un blocco di codice non sospeso in modo sincrono al momento del cambio di stato, per poi riprendere con il risultato. Queste API differiscono dai metodiwhen*esistenti in quanto non consentono l'esecuzione di codice di sospensione e non utilizzano un dispatcher personalizzato. (aosp/1326081)
Modifiche al comportamento
- LifecycleRegistry ora applica DESTROYEDcome stato terminale. (I00887)
- LifecycleRegistryora verifica che i suoi metodi vengano chiamati sul thread principale. È sempre stato un requisito per i cicli di vita di attività, frammenti e così via. L'aggiunta di osservatori da thread non principali ha causato arresti anomali difficili da rilevare in fase di runtime. Per gli oggetti- LifecycleRegistrydi proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzando- LifecycleRegistry.createUnsafe(...), ma devi assicurarti che sia presente una sincronizzazione corretta quando si accede a questo- LifecycleRegistryda thread diversi (Ie7280, b/137392809).
Correzioni di bug
- È stato corretto un arresto anomalo in NullSafeMutableLiveData. (b/159987480)
- È stato corretto un ObsoleteLintCustomCheckper i controlli Lint inclusi inlifecycle-livedata-core-ktx(e in particolareNullSafeMutableLiveData). (b/158699265)
Versione 2.3.0-alpha05
24 giugno 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 è stato rilasciato. La versione 2.3.0-alpha05 contiene questi commit.
Correzioni di bug
- LiveDataora gestisce meglio i casi di rientro, evitando chiamate duplicate a- onActive()o- onInactive(). (b/157840298)
- Risolto un problema per cui i controlli lint non venivano eseguiti quando si utilizzava Android Studio 4.1 Canary 6 o versioni successive. (aosp/1331903)
Versione 2.3.0-alpha04
10 giugno 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 è stato rilasciato. La versione 2.3.0-alpha04 contiene questi commit.
Correzioni di bug
- Risolto un arresto anomalo nel controllo NonNullableMutableLiveDataLint. (b/157294666)
- Il controllo NonNullableMutableLiveDataLint ora copre molti più casi in cui è stato impostato un valorenullsu unMutableLiveDatacon un parametro di tipo non nullo. (b/156002218)
Versione 2.3.0-alpha03
20 maggio 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 sono stati rilasciati. La versione 2.3.0-alpha03 contiene questi commit.
Nuove funzionalità
- SavedStateHandleora supporta la serializzazione differita consentendoti di chiamare- setSavedStateProvider()per una determinata chiave, fornendo un- SavedStateProviderche riceverà un callback a- saveState()quando a- SavedStateHandleviene chiesto di salvare il suo stato. (b/155106862)
- Una nuova API ViewTreeViewModelStoreOwner.get(View)ti consente di recuperare ilViewModelStoreOwnercontenitore dato un'istanzaView. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0-alpha05, Fragment1.3.0-alpha05e AppCompat1.3.0-alpha01. È stata aggiunta un'estensione KotlinfindViewModelStoreOwner()alifecycle-viewmodel-ktx. (aosp/1295522)
Correzioni di bug
- È stato risolto un problema che impediva la pubblicazione dei controlli Lint MutableLiveDatarilasciati in Lifecycle2.3.0-alpha01insieme all'artefattolifecycle-livedata-core-ktx. (b/155323109)
Versione 2.3.0-alpha02
29 aprile 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 è stato rilasciato. La versione 2.3.0-alpha02 contiene questi commit.
Modifiche alle API
- SavedStateViewModelFactoryora ti consente di passare un- Applicationnullo al suo costruttore per supportare meglio i casi in cui non è immediatamente disponibile e non è necessario il supporto per- AndroidViewModel. (aosp/1285740)
Correzioni di bug
- Miglioramento delle prestazioni di avvio a freddo evitando l'errore di verifica della classe sui dispositivi con API 28 e versioni precedenti. (aosp/1282118)
Versione 2.3.0-alpha01
4 marzo 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 è stato rilasciato. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Una nuova API ViewTreeLifecycleOwner.get(View)ti consente di recuperare ilLifecycleOwnercontenitore dato un'istanzaView. Devi eseguire l'upgrade ad Attività1.2.0-alpha01e Frammento1.3.0-alpha01per compilare correttamente questo campo. Un'estensione KotlinfindViewTreeLifecycleOwnerè disponibile inlifecycle-runtime-ktx. (aosp/1182361, aosp/1182956)
- È stato aggiunto un nuovo controllo Lint che ti avvisa quando imposti un valore nullsu unMutableLiveDatadefinito in Kotlin come non nullo. Questa opzione è disponibile quando utilizzi gli artefattilivedata-core-ktxolivedata-ktx. (aosp/1154723, aosp/1159092)
- È disponibile un nuovo artefatto lifecycle-runtime-testingche fornisce unTestLifecycleOwnerche implementaLifecycleOwnere fornisce unLifecyclemodificabile e thread-safe. (aosp/1242438)
Correzioni di bug
- L'artefatto lifecycle-runtimeora ha un nome del pacchetto univoco. (aosp/1187196)
2.2.0
Versione 2.2.0
ViewModel-Savedstate versione 2.2.0
5 febbraio 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 è stato rilasciato.  La versione 2.2.0 contiene questi commit.
Lifecycle ViewModel SavedState ora condivide la stessa versione degli altri artefatti di Lifecycle. Il comportamento di 2.2.0 è identico a quello di 1.0.0.
Versione 2.2.0
22 gennaio 2020
androidx.lifecycle:lifecycle-*:2.2.0 è stato rilasciato.  La versione 2.2.0 contiene questi commit.
Modifiche importanti dalla versione 2.1.0
- Integrazione delle coroutine del ciclo di vita: il nuovo artefatto lifecycle-runtime-ktxaggiunge l'integrazione tra il ciclo di vita e le coroutine Kotlin. Anchelifecycle-livedata-ktxè stato ampliato per sfruttare le coroutine. Per maggiori dettagli, consulta Utilizzare le coroutine Kotlin con i componenti dell'architettura.
- Ritiro di ViewModelProviders.of():ViewModelProviders.of()è stato ritirato. Puoi passare unFragmento unFragmentActivityal nuovo costruttoreViewModelProvider(ViewModelStoreOwner)per ottenere la stessa funzionalità quando utilizzi Fragment1.2.0.
- lifecycle-extensionsRitiro dell'artefatto: con il ritiro di- ViewModelProviders.of()sopra indicato, questa release segna il ritiro dell'ultima API in- lifecycle-extensionse questo artefatto deve ora essere considerato ritirato nella sua interezza. Ti consigliamo vivamente di utilizzare gli artefatti del ciclo di vita specifici di cui hai bisogno (ad esempio- lifecycle-servicese utilizzi- LifecycleServicee- lifecycle-processse utilizzi- ProcessLifecycleOwner) anziché- lifecycle-extensions, in quanto non verrà rilasciata una versione futura di- 2.3.0di- lifecycle-extensions.
- Gradle Incremental Annotation Processor: il processore di annotazioni di Lifecycle è incrementale per impostazione predefinita.
Se la tua app è scritta nel linguaggio di programmazione Java 8, puoi utilizzare DefautLifecycleObserver; se è scritta nel linguaggio di programmazione Java 7, puoi utilizzareLifecycleEventObserver.
Versione 2.2.0-rc03
4 dicembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 è stato rilasciato.  La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- È stato corretto un errore che si verificava quando un ViewModelsimulato veniva archiviato inViewModelStoree interrogato in un secondo momento con la factory predefinita.
- Correggi un utilizzo di Dispatchers.Main.immediateinlaunchWhenCreatede metodi simili da chiamare in modo sincrono durante l'evento del ciclo di vita corrispondente. (aosp/1156203)
Contributi esterni
- Grazie ad Anders Järleberg per aver contribuito alla correzione. (aosp/1156203)
- Grazie a Vsevolod Tolstopyatov di Jetbrains per aver esaminato un'implementazione dell'esecuzione in linea.
Modifiche alle dipendenze
- Lifecycle Extensions ora dipende da Fragment 1.2.0-rc03.
Versione 2.2.0-rc02
7 novembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 è stato rilasciato.  La versione 2.2.0-rc02 contiene questi commit.
Correzioni di bug
- È stato corretto un bug nella configurazione di ProGuard della libreria che interessava i dispositivi con API 28+ se l'API di destinazione è inferiore a 29. (b/142778206)
Versione 2.2.0-rc01
23 ottobre 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 è stato rilasciato.  La versione 2.2.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui launchWhenCreatede i metodi correlati venivano eseguiti un frame dopo il metodo del ciclo di vita associato a causa dell'utilizzo diDispatchers.Mainanziché diDispatchers.Main.immediate. (aosp/1145596)
Contributi esterni
- Grazie a Nicklas Ansman per aver contribuito alla correzione. (aosp/1145596)
Versione 2.2.0-beta01
9 ottobre 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 è stato rilasciato.  La versione 2.2.0-beta01 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione introdotta in Lifecycle 2.2.0-alpha05 nell'ordinamento di ProcessLifecycleOwnere nel passaggio diLifecycleOwnerdell'attività a stato avviato e ripreso sui dispositivi Android 10. (aosp/1128132)
- È stata corretta una regressione introdotta in Lifecycle 2.2.0-alpha05che causava unNullPointerExceptionquando si utilizzava la versione2.0.0o2.1.0dilifecycle-process. (b/141536990)
Versione 2.2.0-alpha05
18 settembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 è stato rilasciato.  La versione 2.2.0-alpha05 contiene questi commit.
Correzioni di bug
- È stata corretta una race condition nel generatore di LiveData delle coroutine. b/140249349
Versione 2.2.0-alpha04
5 settembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- lifecycleScope,- whenCreated,- whenStarted,- whenResumed,- viewModelScopee l'implementazione sottostante di- liveDataora utilizzano- Dispatchers.Main.immediateanziché- Dispatchers.Main. (b/139740492)
Contributi esterni
- Grazie a Nicklas Ansman per aver contribuito al passaggio a Dispatchers.Main.immediate. (aosp/1106073)
Versione 2.2.0-alpha03
7 agosto 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Le implementazioni di ViewModelStoreOwnerora possono implementare facoltativamenteHasDefaultViewModelProviderFactoryper fornire unViewModelProvider.Factorypredefinito. Questo è stato fatto per Activity1.1.0-alpha02, Fragment1.2.0-alpha02e Navigation2.2.0-alpha01. (aosp/1092370, b/135716331)
Modifiche all'API
- ViewModelProviders.of()è stato ritirato. Puoi passare un- Fragmento un- FragmentActivityal nuovo costruttore- ViewModelProvider(ViewModelStoreOwner)per ottenere la stessa funzionalità. (aosp/1009889)
Versione 2.2.0-alpha02
2 luglio 2019
androidx.lifecycle:*:2.2.0-alpha02 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- LiveDataScope.initialValueè stato sostituito con- LiveDataScope.latestValue, che monitorerà il valore emesso corrente del blocco- liveData.
- È stato aggiunto un nuovo overload al builder liveDatache riceve il parametrotimeoutcome tipoDuration
Versione 2.2.0-alpha01
7 maggio 2019
androidx.lifecycle:*:2.2.0-alpha01 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Questa release aggiunge nuove funzionalità che supportano le coroutine Kotlin per Lifecycle e LiveData. La documentazione dettagliata è disponibile qui.
ViewModel-SavedState versione 1.0.0
Versione 1.0.0
22 gennaio 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 è stato rilasciato.  La versione 1.0.0 contiene questi commit.
Funzionalità importanti nella versione 1.0.0
- È stata aggiunta la nuova classe SavedStateHandle. Consente ai tuoi corsi ViewModeldi accedere allo stato salvato e di contribuire. Questo oggetto può essere ricevuto nel costruttore della classeViewModele le fabbriche fornite per impostazione predefinita da Fragment e AppCompatActivity inserirannoSavedStateHandleautomaticamente.
- È stata aggiunta AbstractSavedStateViewModelFactory. Ti consente di creare fabbriche personalizzate per i tuoi ViewModele di fornire loro l'accesso aSavedStateHandle.
ViewModel-Savedstate versione 1.0.0-rc03
4 dicembre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 è stato rilasciato.  La versione 1.0.0-rc03 contiene questi commit.
Modifiche alle dipendenze
- Lifecycle ViewModel SavedState ora dipende da Lifecycle 2.2.0-rc03.
Viewmodel-Savedstate versione 1.0.0-rc02
7 novembre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 è stato rilasciato.  La versione 1.0.0-rc02 contiene questi commit.
Modifiche alle dipendenze
- Ora dipende dal ciclo di vita 2.2.0-rc02.
ViewModel-SavedState versione 1.0.0-rc01
23 ottobre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 viene rilasciato senza modifiche rispetto a 1.0.0-beta01.  La versione 1.0.0-rc01 contiene questi commit.
ViewModel-Savedstate versione 1.0.0-beta01
9 ottobre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 è stato rilasciato.  La versione 1.0.0-beta01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui l'accesso a un ViewModel SavedState per la prima volta in Activity.onActivityResult()generava unIllegalStateException. (b/139093676)
- È stato corretto un IllegalStateExceptiondurante l'utilizzo diAbstractSavedStateViewModelFactory. (b/141225984)
ViewModel-SavedState versione 1.0.0-alpha05
18 settembre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 è stato rilasciato.  La versione 1.0.0-alpha05 contiene questi commit.
Modifiche all'API
- SavedStateViewModelFactorynon estende più- AbstractSavedStateViewModelFactorye- SavedStateHandleviene creato solo per i ViewModels che lo hanno richiesto (aosp/1113593)
ViewModel-SavedState versione 1.0.0-alpha03
7 agosto 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Modifiche che provocano un errore
- lifecycle-viewmodel-savedstatenon dipende più da- fragmente i costruttori- SavedStateViewModelFactory(Fragment)e- SavedStateViewModelFactory(FragmentActivity)correlati sono stati rimossi. Invece,- SavedStateViewModelFactoryè ora la fabbrica predefinita per Activity- 1.1.0-alpha02, Fragment- 1.2.0-alpha02e Navigation- 2.2.0-alpha01. (b/135716331)
ViewModel-SavedState versione 1.0.0-alpha02
2 luglio 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- È stato aggiunto l'overload SavedStateHandle.getLiveData()che accetta un valore predefinito.
Modifiche alle API
- SavedStateVMFactoryè stato rinominato in- SavedStateViewModelFactory.
- AbstractSavedStateVMFactoryè stato rinominato in- AbstractSavedStateViewModelFactory.
ViewModel-Savedstate versione 1.0.0-alpha01
13 marzo 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 è stato rilasciato.  Il log completo dei commit per questa release iniziale è disponibile qui.
Nuove funzionalità
- Ora ViewModelspuò contribuire a savedstate. A questo scopo, utilizza la factorySavedStateVMFactorydel view model appena introdotto e il tuo ViewModel deve avere un costruttore che riceve l'oggettoSavedStateHandlecome parametro.
Versione 2.1.0
Modifiche importanti dalla versione 2.0.0
- È stato aggiunto LifecycleEventObserverper i casi in cui è necessario un flusso di eventi del ciclo di vita. Si tratta di un'API pubblica anziché di una classeGenericLifecycleObservernascosta.
- Sono state aggiunte estensioni KTX per i metodi LiveData.observeeTransformations.*.
- È stato aggiunto Transformations.distinctUntilChanged, che crea un nuovo oggetto LiveData che non emette un valore finché il valore dell'origineLiveDatanon è stato modificato.
- È stato aggiunto il supporto delle coroutine in ViewModels aggiungendo la proprietà di estensione ViewModel.viewModelScope.
Versione 2.1.0
5 settembre 2019
androidx.lifecycle:lifecycle-*:2.1.0 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Versione 2.1.0-rc01
2 luglio 2019
androidx.lifecycle:*:2.1.0-rc01 viene rilasciato senza modifiche rispetto a androidx.lifecycle:*:2.1.0-beta01.  I commit inclusi in questa versione sono disponibili qui.
Versione 2.1.0-beta01
7 maggio 2019
androidx.lifecycle:*:2.1.0-beta01 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- I cicli di vita sono stati portati alla versione beta: le API introdotte nelle versioni alpha precedenti, come le funzioni di estensione liveDataper trasformazioni e osservazioni, l'inizializzazioneViewModelcon delega di proprietà e altre sono state stabilizzate e non verranno modificate.
Versione 2.1.0-alpha04
3 aprile 2019
androidx.lifecycle:*:2.1.0-alpha04 è stato rilasciato.  I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- Modifica che provoca un errore: l'API sottostante by viewModels()eby activityViewModels()è stata modificata per supportare direttamente unViewModelStore, anziché solo unViewModelStoreOwner. (aosp/932932)
Versione 2.1.0-alpha03
13 marzo 2019
androidx.lifecycle:*:2.1.0-alpha03 è stato rilasciato.  L'elenco completo dei commit inclusi in questa versione è disponibile qui.
Modifiche all'API
- La carta ViewModelProvider.KeyedFactoryè stata rimossa. La seconda interfaccia oltre aViewModelProvider.Factorynon si integrava bene con le nuove funzionalità come la delega di proprietà in Kotlinby viewmodels {}. (aosp/914133)
Versione 2.1.0-alpha02
30 gennaio 2019
androidx.lifecycle 2.1.0-alpha02 è stato rilasciato.
Modifiche all'API
- LifecycleRegistryora contiene un metodo- setCurrentState()che sostituisce il metodo- setState(), ora deprecato. (aosp/880715)
Correzioni di bug
- È stato risolto un problema per cui le istanze di ViewModelsimulato si arrestavano in modo anomalo quandoViewModelStorecontenitore veniva cancellato. b/122273087
Versione 2.1.0-alpha01
17 dicembre 2018
androidx.lifecycle 2.1.0-alpha01 è stato rilasciato.
Nuove funzionalità
- È stato aggiunto LifecycleEventObserverper i casi in cui è necessario un flusso di eventi del ciclo di vita. Si tratta di un'API pubblica anziché di una classeGenericLifecycleObservernascosta.
- Sono state aggiunte estensioni KTX per i metodi LiveData.observeeTransformations.*.
- È stato aggiunto il metodo Transformations.distinctUntilChanged. Crea un nuovo oggettoLiveDatache non emette un valore finché il valore LiveData di origine non è stato modificato.
- Supporto delle coroutine in ViewModels: è stata aggiunta la proprietà di estensione ViewModel.viewModelScope.
- È stato aggiunto ViewModelProvider.KeyedFactory, una factory per ViewModels che ricevekeyeClassnel metodocreate.
Versione 2.0.0
Versione 2.0.0
21 settembre 2018
Lifecycle 2.0.0 viene rilasciato con una correzione di bug da 2.0.0-rc01 in ViewModel.
Correzioni di bug
- Correzione di una regola ProGuard di ViewModel che rimuoveva in modo errato i costruttori b/112230489
Versione 2.0.0-beta01
2 luglio 2018
Correzioni di bug
- Regola ProGuard di LifecycleObserver corretta per mantenere solo le implementazioni, non le sottointerfacce b/71389427
- Regole ProGuard di ViewModel corrette per consentire l'offuscamento e la riduzione
Versioni precedenti di AndroidX
Per le versioni precedenti ad AndroidX di Lifecycle che seguono, includi queste dipendenze:
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"
}
Versione 1.1.1
21 marzo 2018
Solo una piccola modifica: android.arch.core.util.Function è stato spostato da arch:runtime a arch:common. Ciò consente di utilizzarlo senza la dipendenza di runtime, ad esempio in paging:common di seguito.
lifecycle:common è una dipendenza di lifecycle:runtime, quindi questa modifica non influisce direttamente su lifecycle:runtime, ma solo sui moduli che dipendono direttamente da lifecycle:common, come Paging.
Versione 1.1.0
22 gennaio 2018
Modifiche all'imballaggio
Sono ora disponibili nuove dipendenze molto più piccole:
- android.arch.lifecycle:livedata:1.1.0
- android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- I campi LifecycleActivityeLifecycleFragmentobsoleti sono stati rimossi. UtilizzaFragmentActivity,AppCompatActivityo supportaFragment.
- Sono state aggiunte @NonNullannotazioni aViewModelProviderseViewModelStores
- Il costruttore ViewModelProvidersè stato ritirato. Utilizza direttamente i relativi metodi statici.
- ViewModelProviders.DefaultFactoryè stato deprecato. Utilizza- ViewModelProvider.AndroidViewModelFactory
- È stato aggiunto il metodo statico ViewModelProvider.AndroidViewModelFactory.getInstance(Application)per recuperare unFactorystatico adatto alla creazione di istanzeViewModeleAndroidViewModel.
