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 inViewModelStoreNavEntryDecoratorDefaults, con la "s". (I6d27b, b/444447434)
Correzioni di bug
rememberLifecycleOwnernon si arresta più in modo anomalo se il proprietario riceve un eventoLifecycle.Event.ON_DESTROYprima di passare aLifeycle.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 (comeActivity,FragmentoNavBackStackEntry). 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 suDESTROYEDal 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 diin,+=e+conCreationExtras.
Supporto della serializzazione KotlinX
Con il supporto di KotlinX Serialization aggiunto in SavedState
1.3.0, abbiamo introdottosaved, un delegato di proprietà lazy, per semplificare l'archiviazione delle classi@Serializablein unSavedStateHandlee il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegatosavedè pigro e non chiamerà la lambdainitné salverà nulla inSavedStateHandlefinché 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 cuiBundlerestituito è 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 unSavedStateHandleper ogniViewModel, causando un sovraccarico non necessario. UtilizzaViewModelProvider.FactoryconCreationExtras.createSavedStateHandleper una creazione più efficiente diViewModel. (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 introdottosaved, un delegato di proprietà lazy, per semplificare l'archiviazione delle classi@Serializablein unSavedStateHandlee il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegatosavedè pigro e non chiamerà la lambdainitné salverà nulla inSavedStateHandlefinché 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 cuiBundlerestituito è vuoto. (I910b5, b/370577987)
Correzioni di bug
Lifecycle.eventFlowora viene completato correttamente quandoLifecycleè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 diin,+=e+conCreationExtras. (Ib4353)CreationExtrasora implementa i metodiequals,hashCodeetoString. (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 rimossidesktopelementi 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 suLiveData(ad esempio, quando si utilizzatake(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 dicompileOnlycon 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 dacompose-runtime, rimuovendo la dipendenza comune dacompose-ui. L'artefatto Android mantiene il suocompose-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 alifecycle-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 eSupervisorJob()o di eseguire l'override del valore predefinito utilizzandobackgroundScopedisponibile inrunTest. (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 utilizzaAutoClosableanzichéCloseable. Ora supporta l'aggiunta di oggettiAutoCloseablecon unkeyche consente di recuperarli tramitegetCloseable().La chiamata di
LifecycleStartEffecteLifecycleResumeEffectsenza una chiave ora genera un errore, seguendo la stessa convenzione dell'APIDisposableEffectche queste API rispecchiano.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)deprecato a favore diLiveData.toPublisher(lifecycleOwner).Le estensioni Kotlin
lifecycle-livedata-core-ktxsono state spostate nel modulolifecycle-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 sucommone supporta JVM e iOS oltre ad Android.lifecycle-runtimesposta la maggior parte delle API sucommone supporta JVM e iOS oltre ad Android.lifecycle-runtime-ktxora è vuoto e tutte le API sono state spostate inlifecycle-runtime.lifecycle-runtime-composesposta tutte le API sucommone spedisce un artefatto Android, in linea con il supporto multipiattaforma diandroidx.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.NewInstanceFactoryeViewModelProvider.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 unEmptyCoroutineContextnelle piattaforme in cuiDispatchers.Mainnon è disponibile (ad es. Linux).
Artefatti interessati:
lifecycle-viewmodelsposta la maggior parte delle API sucommone supporta JVM e iOS oltre ad Android.lifecycle-viewmodel-ktxora è vuoto e tutte le API sono state spostate inlifecycle-viewmodel.lifecycle-viewmodel-composesposta tutte le API sucommone spedisce un artefatto Android, in linea con il supporto multipiattaforma diandroidx.compose.
Modifiche al comportamento
InitializerViewModelFactory(inclusa la funzione di creazioneviewModelFactory) ora genererà un erroreIllegalArgumentExceptionse è già stato aggiunto uninitializercon lo stessoclazz: 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 eSupervisorJob()o di eseguire l'override del valore predefinito utilizzandobackgroundScopedisponibile inrunTest. (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.NewInstanceFactoryeViewModelProvider.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 unEmptyCoroutineContextnelle piattaforme in cuiDispatchers.Mainnon è disponibile (ad es. Linux).
Modifiche al comportamento
InitializerViewModelFactory(inclusa la funzione di creazioneviewModelFactory) ora genererà un erroreIllegalArgumentExceptionse è già stato aggiunto uninitializercon lo stessoclazz: KClass<VM : ViewModel>. (Ic3a36)
Correzioni di bug
ViewModel.getCloseableora gestisce le chiavi duplicate: sekeyha già una risorsaAutoCloseableassociata, 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 utilizzaAutoCloseableanzichéCloseable. Si tratta di una modifica compatibile con le versioni precedenti. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)deprecato a favore diLiveData.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 oggettiCloseablecon unkeyche consente di recuperarli tramitegetCloseable(). (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 sospensionesetCurrentState()che garantisce che la modifica dello stato e tutti i callbackLifecycleObservervengano completati prima di tornare. In particolare, a differenza dell'impostazione diretta della proprietàcurrentState, questa non utilizzarunBlocking, il che la rende sicura da usare all'interno di una coroutine come quella fornita darunTest.- 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
LifecycleStartEffecteLifecycleResumeEffectora eliminano e ricreano correttamente il blocco degli effetti se viene modificatoLifecycleOwner. (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 impostareLifecycle.StatediTestLifecycleOwnerutilizzando il campocurrentStateall'interno di una coroutine. Il controllo Lint ora suggerisce la sospensione disetCurrentState, che consente di impostareLifecycle.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 sospensionesetCurrentState()per dare agli utenti la possibilità di utilizzareTestLifecycleOwnerall'interno di una coroutine come quella fornita darunTest. (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 tramiteLifecycle.currentStateFlow, che restituisce unStateFlowin cuivalueè l'attualeLifecycle.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 SavedState1.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 perLiveData, consentendoti di distinguere traliveData.valueche restituiscenullperché non è mai stato impostato alcun valore o un valorenullesplicito.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 funzionegetLifecycle()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 funzionegetViewModelStore()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 comeTransformations.map. Il codice Kotlin deve ora utilizzare la sintassi del metodo di estensione Kotlin, che in precedenza era disponibile solo quando si utilizzavalifecycle-livedata-ktx. Quando si utilizza il linguaggio di programmazione Java, le versioni di questi metodi che accettano un metodoandroidx.arch.core.util.Functionsono obsolete e sostituite dalle versioni che accettano unFunction1Kotlin. 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 suViewdiandroidx.lifecycle.setViewTreeViewModelStoreOwnereandroidx.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 metodoonChanged()ora utilizza il nomevalueper il parametro. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchereProcessLifecycleOwnersono 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 perLiveData, consentendoti di distinguere traliveData.valueche restituiscenullperché non è mai stato impostato alcun valore o un valorenullesplicito. (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 suViewdiandroidx.lifecycle.setViewTreeLifecycleOwnereandroidx.lifecycle.findViewTreeLifecycleOwnerper impostare e trovare un proprietario impostato in precedenza. Questa sostituisce l'estensione Kotlin precedente inlifecycle-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 inlifecycle-reactivestreams-ktxsono state spostate nel modulolifecycle-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,LifecycleObservereViewModelStoresono ora scritti in Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Correzioni di bug
SavedStateHandlenon si arresta più in modo anomalo con unClassCastExceptionquando chiamaget()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 uncallbackFlowanziché utilizzare la propria implementazioneChannelper 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'APIgetStateFlow()che restituisce unStateFlowKotlin per monitorare le modifiche dei valori in alternativa all'utilizzo diLiveData.ViewModel CreationExtras: quando scrivi un
ViewModelProvider.Factorypersonalizzato, non è più necessario estendereAndroidViewModelFactoryoAbstractSavedStateViewModelFactoryper accedere rispettivamente a unApplicationoSavedStateHandle. Questi campi vengono invece forniti a ogni sottoclasseViewModelProvider.FactorycomeCreationExtrastramite il nuovo overload dicreate:create(Class<T>, CreationExtras). Questi extra vengono forniti automaticamente dall'attività o dal fragment quando utilizzi rispettivamente Activity1.5.0e Fragment1.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 unviewModelFactoryDSL Kotlin che ti consente di definireViewModelProvider.Factoryin termini di uno o più inizializzatori lambda, uno per ogni classeViewModelspecifica supportata dalla tua factory personalizzata, utilizzandoCreationExtrascome 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'APIviewModel()che accetta una factory lambda per creare un'istanzaViewModelsenza richiedere la creazione di unViewModelProvider.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 inSavedStateHandle.saveableche consentono un comportamento simile arememberSaveablesupportato daSavedStateHandledi 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ù oggettiCloseableall'ViewModelche verrà chiuso quando l'ViewModelviene cancellato senza richiedere alcun intervento manuale inonCleared().Ad esempio, per creare un ambito di coroutine che puoi inserire in un ViewModel, ma controllare tramite i test, puoi creare un
CoroutineScopeche implementaCloseable: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 diviewModelScope: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 statoDESTROYED.
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 unNullPointerExceptionquando viene passata un'originenullanziché propagare l'originenullagli 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 diCreationExtrasanche se è stato inizializzato con unSavedStateRegistryOwner. 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'APIgetStateFlow()che restituisce unStateFlowKotlin per monitorare le modifiche dei valori come alternativa all'utilizzo diLiveData. (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 unInitializerViewModelFactoryche ti consente di aggiungere lambda per la gestione di particolari classiViewModel, utilizzandoCreationExtrascome origine dati principale. (If58fc, b/216687549)lifecycle-viewmodel-composeora offre un'APIviewModel()che accetta una factory lambda per creare un'istanzaViewModelsenza richiedere la creazione di unViewModelProvider.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 statoDESTROYED. (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
SavedStateHandleeSavedStateViewModelFactorysono 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: questoStringfornisce l'accesso alla chiave personalizzata che hai passato aViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYfornisce l'accesso al corsoApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYfornisce l'accesso aSavedStateRegistryOwnerutilizzato per creare questo ViewModel.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYfornisce l'accesso aViewModelStoreOwnerutilizzato per creare questo ViewModel.SavedStateHandleSupport.DEFAULT_ARGS_KEYfornisce l'accesso all'Bundledegli argomenti da utilizzare per costruire unSavedStateHandle.
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 diProcessLifecycleInitializercausava unStartupException. (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 inveceLifecycleEventObserveroDefaultLifecycleObserver.- È 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 dalifecycle.lifecycle-common-java8alifecycle.lifecycle-common.lifecycle.lifecycle-common-java8non fornisce più funzionalità aggiuntive rispetto alifecycle.lifecycle-common, pertanto la dipendenza da questo può essere sostituita dalifecycle.lifecycle-common.- L'API non coroutine di
lifecycle-viewmodel-ktxè stata spostata nel modulolifecycle-viewmodel. lifecycle-processora utilizzaandroidx.startupper inizializzareProcessLifecycleOwner.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.LifecycleEventObserveroDefaultLifecycleObserverdevono 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 utilizzaandroidx.startupper inizializzareProcessLifecycleOwner.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 unViewModelStoreOwnerfacoltativo, semplificando la collaborazione con proprietari diversi daLocalViewModelStoreOwner. Ad esempio, ora puoi utilizzareviewModel(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 unViewModelStoreOwnernullable per determinare meglio se unViewModelStoreOwnerè disponibile nella composizione corrente. Le API che richiedono unViewModelStoreOwner, ad esempioviewModel()eNavHost, generano comunque un'eccezione se non è impostato unViewModelStoreOwner. (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 diprovidesfunzioni che possono essere utilizzate conCompositionLocalProvider, sostituendo l'APIasProvidableCompositionLocal(). (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 oggettiLifecycleRegistrydi proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzandoLifecycleRegistry.createUnsafe(...), ma devi assicurarti che sia in atto una sincronizzazione corretta quando si accede a questoLifecycleRegistryda 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 APILifecycle.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 metodiwhen*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 KotlinLiveData.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 oggettiLifecycleRegistrydi proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzandoLifecycleRegistry.createUnsafe(...), ma devi assicurarti che sia presente una sincronizzazione corretta quando si accede a questoLifecycleRegistryda 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 aonActive()oonInactive(). (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 chiamaresetSavedStateProvider()per una determinata chiave, fornendo unSavedStateProviderche riceverà un callback asaveState()quando aSavedStateHandleviene 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 unApplicationnullo al suo costruttore per supportare meglio i casi in cui non è immediatamente disponibile e non è necessario il supporto perAndroidViewModel. (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 diViewModelProviders.of()sopra indicato, questa release segna il ritiro dell'ultima API inlifecycle-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 esempiolifecycle-servicese utilizziLifecycleServiceelifecycle-processse utilizziProcessLifecycleOwner) anzichélifecycle-extensions, in quanto non verrà rilasciata una versione futura di2.3.0dilifecycle-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 diliveDataora utilizzanoDispatchers.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 unFragmento unFragmentActivityal nuovo costruttoreViewModelProvider(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 conLiveDataScope.latestValue, che monitorerà il valore emesso corrente del bloccoliveData.- È 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ùAbstractSavedStateViewModelFactoryeSavedStateHandleviene 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ù dafragmente i costruttoriSavedStateViewModelFactory(Fragment)eSavedStateViewModelFactory(FragmentActivity)correlati sono stati rimossi. Invece,SavedStateViewModelFactoryè ora la fabbrica predefinita per Activity1.1.0-alpha02, Fragment1.2.0-alpha02e Navigation2.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 inSavedStateViewModelFactory.AbstractSavedStateVMFactoryè stato rinominato inAbstractSavedStateViewModelFactory.
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 metodosetCurrentState()che sostituisce il metodosetState(), 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.0android.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. UtilizzaViewModelProvider.AndroidViewModelFactory- È stato aggiunto il metodo statico
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)per recuperare unFactorystatico adatto alla creazione di istanzeViewModeleAndroidViewModel.