Ciclo di vita
Questa tabella elenca tutti gli artefatti nel gruppo androidx.lifecycle
.
Elemento | Release stabile | Candidato per la release | Versione beta | Alpha Release |
---|---|---|---|---|
lifecycle-* | 2.9.1 | - | - | - |
lifecycle-viewmodel-navigation3 | - | - | - | 1.0.0-alpha03 |
Dichiarazione di 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 che ti servono nel file build.gradle
per
la tua app o il tuo modulo:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.1" 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:1.0.0-alpha03" // 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.1" 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:1.0.0-alpha03") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.1" 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.1" 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 Aggiungere 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 crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. 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.
Lifecycle ViewModel Navigation3 versione 1.0.0
Versione 1.0.0-alpha03
2 luglio 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
e androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
sono stati rilasciati. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle dipendenze
- Lifecycle ViewModel Navigation 3 ora dipende da Navigation3 Alpha05
Versione 1.0.0-alpha02
18 giugno 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
e androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
sono stati rilasciati. La versione 1.0.0-alpha02 contiene questi commit.
Aggiornamenti delle dipendenze
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
dipende dalle modifiche apportate a Navigation31.0.0-alpha04
. (Icd0fd, b/420991203)
Versione 1.0.0-alpha01
23 maggio 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
- Lifecycle ViewModel Navigation3 è una nuova libreria creata insieme a Navigation3 per fornire integrazioni con
ViewModels
. L'artefattoandroidx.lifecycle:lifecycle-viewmodel-navigation3
fornisce l'ViewModelStoreNavEntryDecorator
, che fornisce unViewModelStoreOwner
univoco per i contenuti di ogniNavEntry
. Fornisce anche unrememberViewModelStoreNavEntryDecorator()
per garantire che il decoratore venga gestito correttamente dalle modifiche alla configurazione.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
Versione 2.9
Versione 2.9.1
4 giugno 2025
androidx.lifecycle:lifecycle-*:2.9.1
viene ritirata. La versione 2.9.1 contiene questi commit.
Correzioni di bug
- Correzione degli stati
SavedStateHandle.remove(key)
che non vengono cancellatiSavedStateHandle.getMutableStateFlow(key)
. (d5f939, b/418746333)
Versione 2.9.0
7 maggio 2025
androidx.lifecycle:lifecycle-*:2.9.0
viene ritirata. La versione 2.9.0 contiene questi commit.
Modifiche importanti dalla versione 2.8.0
- È disponibile un nuovo artefatto KMP
androidx.lifecycle:lifecycle-viewmodel-testing
che fornisce una classeViewModelScenario
per testareViewModels
in isolamento, con supporto peronCleared
eSavedStateHandle
, nonché per testare l'interruzione e la ricreazione del processo tramiterecreate()
. - Aggiungi
getMutableStateFlow
aSavedStateHandle
per 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. CreationExtras
ora 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@Serializable
in unSavedStateHandle
e il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegatosaved
è pigro e non chiamerà la lambdainit
né salverà nulla inSavedStateHandle
finché 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-testing
ora è compatibile con KMP, incluse API comeTestLifecycleOwner
. - Il modulo
lifecycle-viewmodel-savedstate
ora è 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 unLifecycle
da questo stato a un altro ora comporterà unIllegalStateException
. SavedStateHandle
non include piùSavedStateProvider.saveState()
in cuiBundle
restituito è vuoto.
Versione 2.9.0-rc01
23 aprile 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01
viene ritirata. La versione 2.9.0-rc01 contiene questi commit.
Versione 2.9.0-beta01
9 aprile 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01
viene ritirata. La versione 2.9.0-beta01 contiene questi commit.
Modifiche alle API
Lifecycle ViewModel Compose
ora utilizza la stessa configurazione Kotlin Multiplatform di Compose Runtime 1.7.1 e versioni successive. Gli artefatti-desktop
sono stati rimossi e sono stati aggiunti gli artefatti-jvmStubs
e-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 Compose
ora 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
viene ritirata. La versione 2.9.0-alpha12 contiene questi commit.
Modifiche alle API
- Aggiungi l'annotazione
@MainThread
aViewModelProvider.get
in tutte le piattaforme KMP supportate. (I7e8dd, b/397736115) - Rinomina
SavedState*Delegates
inSavedState*Delegate
. (I8589b, b/399629301)
Versione 2.9.0-alpha11
26 febbraio 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11
viene ritirata. La versione 2.9.0-alpha11 contiene questi commit.
Modifiche alle API
- Aggiungi il parametro
SavedStateConfig
ai delegati disaved()
(I39b3a)
Versione 2.9.0-alpha10
12 febbraio 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10
viene ritirata. La versione 2.9.0-alpha10 contiene questi commit.
Modifiche alle API
- Sposta
MutableStateSerializer
insavedstate-compose
dalifecycle-viewmodel-compose
. (I4f690, b/378895074)
Contributo esterno
- Aggiunge un nuovo problema di Lint per la chiamata di
Lifecycle::currentState
nella composizione, suggerendo invece l'utilizzo dicurrentStateAsalue().value
per 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
viene ritirata. La versione 2.9.0-alpha09 contiene questi commit.
Nuove funzionalità
- Aggiungi
MutableStateSerializer
per la serializzazione diandroidx.compose.runtime.MutableState
. (Idfc48, b/378895074)
Modifiche alle API
- Sostituisci le funzioni delegate
SavedStateHandle.saved()
sovraccariche con i parametri predefiniti (Icd1c1) AbstractSavedStateViewModelFactory
è deprecato perché crea unSavedStateHandle
per ogniViewModel
, causando un sovraccarico non necessario. UtilizzaViewModelProvider.Factory
conCreationExtras.createSavedStateHandle
per una creazione più efficiente diViewModel
. (Ia920b, b/388590327)
Versione 2.9.0-alpha08
11 dicembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
viene ritirata. La versione 2.9.0-alpha08 contiene questi commit.
Nuove funzionalità
- Aggiungi
ViewModelScenario.recreate
per simulare l'interruzione di un processo di sistema ricreandoViewModel
in fase di test e tutti i componenti associati. (Id6a69, b/381063087) - Le istanze
LifecycleOwner
eViewModelStoreOwner
recuperate tramite le rispettive APIfindViewTree
ora 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
- Rendere i nomi e l'organizzazione dei pacchetti più coerenti 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.onCleared
dei documenti. (I586c7, b/363984116)
Versione 2.9.0-alpha07
13 novembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07
viene ritirata. La versione 2.9.0-alpha07 contiene questi commit.
Compatibilità con Kotlin Multiplatform
- Lifecycle
ViewModel SavedState
ora è compatibile con KMP. In questo modo puoi utilizzareSavedStateHandle
nel 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@Serializable
in unSavedStateHandle
e il ripristino automatico di queste classi in caso di interruzione e ricreazione del processo. Tieni presente che il delegatosaved
è pigro e non chiamerà la lambdainit
né salverà nulla inSavedStateHandle
finché 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
getMutableStateFlow
aSavedStateHandle
per 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
viene ritirata. La versione 2.9.0-alpha06 contiene questi commit.
Modifiche al comportamento
- Lo stato
Lifecycle.DESTROYED
è terminale e qualsiasi tentativo di spostare unLifecycle
da questo stato a un altro ora comporterà unIllegalStateException
. (I116c4, b/370577987) SavedStateHandle
non include piùSavedStateProvider.saveState()
in cuiBundle
restituito è vuoto. (I910b5, b/370577987)
Correzioni di bug
Lifecycle.eventFlow
ora 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
viene ritirata. 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 comeSavedStateHandle
nel 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
viene ritirata. La versione 2.9.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Lifecycle
2.8.6
: l'NullSafeMutableLiveData
errore Lint ha un supporto migliorato per i cast intelligenti, evitando falsi positivi. (85fed6, b/181042665)
Aggiornamenti delle dipendenze
- Da Lifecycle
2.8.6
: Lifecycle Runtime Compose ora dipende da Compose Runtime1.7.1
- Lifecycle Runtime ora dipende da ProfileInstaller
1.4.0
Versione 2.9.0-alpha02
4 settembre 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
viene ritirata. La versione 2.9.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Ciclo di vita
2.8.5
: aggiorna le regoleandroidx.lifecycle.ReportFragment
ProGuard per consentire l'offuscamento . (ff898e1)
Contributo esterno
- Sposta
androidx.compose.ui.platform.LocalLifecycleOwner
nel set di origini comune (KMP). Grazie a Ivan Matkov di JetBrains per il contributo. (8cd5d03) - Da Lifecycle
2.8.5
: il delegato di 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
viene ritirata. La versione 2.9.0-alpha01 contiene questi commit.
Kotlin Multiplatform
lifecycle-testing
ora è compatibile con KMP. (Iea41e)- Aggiungi il supporto per la destinazione multipiattaforma Kotlin
linuxArm64
(I139d3, b/338268719)
Nuove funzionalità
- È disponibile un nuovo artefatto KMP
androidx.lifecycle:lifecycle-viewmodel-testing
che fornisce una classeViewModelScenario
per testare i ViewModel in isolamento, con supporto peronCleared
(tutte le piattaforme) eSavedStateHandle
(solo Android). (337f68d, c9b3409, 9799a95c, b/264602919) - La creazione di un
ViewModel
conViewModelProvider
ora è thread-safe; le annotazioni@MainThread
sono state rimosse. (Ifd978, b/237006831)
Modifiche alle API
- Aggiungi la funzione di fabbrica
CreationExtras.Key()
per semplificare la creazione di oggettiCreationExtras.Key
anonimi. (I970ee) CreationExtras
ora include sovraccarichi di operatori simili a mappe per consentire la manipolazione idiomatica dei contenuti in Kotlin. Consente l'utilizzo diin
,+=
e+
conCreationExtras
. (Ib4353)CreationExtras
ora implementa i metodiequals
,hashCode
etoString
. (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é questa 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
viene ritirata. 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 rimossidesktop
elementi e sono stati aggiunti-jvmStubs
e-linuxx64Stubs
elementi. 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
viene ritirata. La versione 2.8.6 contiene questi commit.
Correzioni di bug
- L'
NullSafeMutableLiveData
errore 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
viene ritirata. La versione 2.8.5 contiene questi commit.
Correzioni di bug
- Aggiorna le regole di
androidx.lifecycle.ReportFragment
ProGuard per consentire l'offuscamento . (ff898e1)
Contributo esterno
- Il delegato dell'estensione
SavedStateHandle.saveable
ora 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
viene ritirata. 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*Effect
ora è 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
viene ritirata. 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
viene ritirata. La versione 2.8.2 contiene questi commit.
Correzioni di bug
- Sono stati corretti gli errori
CompositionLocal LocalLifecycleOwner not present
quando 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) ViewModelProvider
non si arresterà più in modo anomalo quando si combinano versioni precedenti delle dipendenze del ciclo di vita dicompileOnly
con 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
viene ritirata. La versione 2.8.1 contiene questi commit.
Correzioni di bug
lifecycle-viewmodel-compose
ora ha solo una dipendenza comune dacompose-runtime
, rimuovendo la dipendenza comune dacompose-ui
. L'artefatto Android mantiene il suocompose-ui
per la compatibilità. (aosp/3079334, b/339562627)- L'integrazione di
ViewModel
consaveable
che 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
viene ritirata. La versione 2.8.0 contiene questi commit.
Modifiche importanti dalla versione 2.7.0
LocalLifecycleOwner
è stato spostato dall'interfaccia utente Compose alifecycle-runtime-compose
in modo che le relative API helper basate su Compose possano essere utilizzate al di fuori dell'interfaccia utente Compose.- L'artefatto
lifecycle-runtime-compose
ora contiene le APIdropUnlessResumed
edropUnlessStarted
, che ti consentono di eliminare i clic o altri eventi che si verificano anche dopo cheLifecycleOwner
è sceso al di sotto delLifecycle.State
specificato. 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 utilizzandobackgroundScope
disponibile 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 utilizzaAutoClosable
anzichéCloseable
. Ora supporta l'aggiunta di oggettiAutoCloseable
con unkey
che consente di recuperarli tramitegetCloseable()
.La chiamata di
LifecycleStartEffect
eLifecycleResumeEffect
senza una chiave ora genera un errore, seguendo la stessa convenzione dell'APIDisposableEffect
che queste API rispecchiano.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
deprecato a favore diLiveData.toPublisher(lifecycleOwner)
.Le estensioni Kotlin
lifecycle-livedata-core-ktx
sono 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-common
sposta la maggior parte delle API sucommon
e supporta JVM e iOS oltre ad Android.lifecycle-runtime
sposta la maggior parte delle API sucommon
e supporta JVM e iOS oltre ad Android.lifecycle-runtime-ktx
ora è vuoto e tutte le API sono state spostate inlifecycle-runtime
.lifecycle-runtime-compose
sposta tutte le API sucommon
e fornisce 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
ViewModelProvider
viene ora eseguita tramite i metodiViewModelProvider.create()
anziché chiamando direttamente il relativo costruttore. ViewModelProvider.NewInstanceFactory
eViewModelProvider.AndroidViewModelFactory
sono disponibili solo su Android.- È consigliabile che le fabbriche personalizzate estendano
ViewModelProvider.Factory
e utilizzino il metodocreate
che accetta unCreationExtras
o utilizzino il DSL KotlinviewModelFactory
.
- È consigliabile che le fabbriche personalizzate estendano
- L'utilizzo di
ViewModelProvider
senza una fabbrica personalizzata su piattaforme non JVM genera unUnsupportedOperationException
. Sulle piattaforme JVM, la compatibilità viene mantenuta utilizzando il costruttore ViewModel senza argomenti se non viene fornita una factory personalizzata. viewModelScope
verrà eseguito il fallback a unEmptyCoroutineContext
nelle piattaforme in cuiDispatchers.Main
non è disponibile (ad es. Linux).
Artefatti interessati:
lifecycle-viewmodel
sposta la maggior parte delle API sucommon
e supporta JVM e iOS oltre ad Android.lifecycle-viewmodel-ktx
ora è vuoto e tutte le API sono state spostate inlifecycle-viewmodel
.lifecycle-viewmodel-compose
sposta tutte le API sucommon
e fornisce un artefatto Android, in linea con il supporto multipiattaforma diandroidx.compose
.
Modifiche al comportamento
InitializerViewModelFactory
(inclusa la funzione di creazioneviewModelFactory
) ora genererà un erroreIllegalArgumentException
se è già stato aggiunto uninitializer
con lo stessoclazz: KClass<VM : ViewModel>
. (Ic3a36)
Problemi noti
lifecycle-*:2.8.0
richiede 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
viene ritirata. 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-common
non veniva pacchettizzato correttamente. Ora sono inclusi nell'AARlifecycle-runtime
. (aosp/3038274, b/322382422) - È stata corretta una modifica involontaria dell'ordine di cancellazione delle istanze
AutoCloseable
associate a un ViewModel: è stato ripristinato l'ordine precedente diaddCloseable(String, AutoCloseable)
, poiaddClosable(AutoCloseable)
e infineonCleared()
. (aosp/3041632) - Migliora il comportamento di creazione predefinito per
viewModelScope
per 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
viene ritirata. La versione 2.8.0-beta01 contiene questi commit.
Nuove funzionalità
- L'artefatto
lifecycle-runtime-compose
ora è compatibile con Kotlin Multiplatform, il cui codice è stato spostato incommon
e 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
viene ritirata. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'artefatto
lifecycle-viewmodel-compose
ora è compatibile con Kotlin Multiplatform, il cui codice è stato spostato incommon
e viene fornito un artefatto Android, in linea con il supporto multipiattaforma diandroidx.compose
. Per adattarsi a questa modifica, il metodoviewModel
di Composable ora accetta unKClass
oltre 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-compose
ora 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
viene ritirata. 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 utilizzandobackgroundScope
disponibile 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à con Kotlin Multiplatform
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
ViewModelProvider
viene ora eseguita tramite i metodiViewModelProvider.create()
anziché chiamando direttamente il relativo costruttore. ViewModelProvider.NewInstanceFactory
eViewModelProvider.AndroidViewModelFactory
sono disponibili solo su Android.- È consigliabile che le fabbriche personalizzate estendano
ViewModelProvider.Factory
e utilizzino il metodocreate
che accetta unCreationExtras
o utilizzino il DSL KotlinviewModelFactory
.
- È consigliabile che le fabbriche personalizzate estendano
- L'utilizzo di
ViewModelProvider
senza una fabbrica personalizzata su piattaforme non JVM genera unUnsupportedOperationException
. Sulle piattaforme JVM, la compatibilità viene mantenuta utilizzando il costruttore ViewModel senza argomenti se non viene fornita una factory personalizzata. viewModelScope
verrà eseguito il fallback a unEmptyCoroutineContext
nelle piattaforme in cuiDispatchers.Main
non è disponibile (ad es. Linux).
Modifiche al comportamento
InitializerViewModelFactory
(inclusa la funzione di creazioneviewModelFactory
) ora genererà un erroreIllegalArgumentException
se è già stato aggiunto uninitializer
con lo stessoclazz: KClass<VM : ViewModel>
. (Ic3a36)
Correzioni di bug
ViewModel.getCloseable
ora gestisce le chiavi duplicate: sekey
ha già una risorsaAutoCloseable
associata, la vecchia risorsa verrà sostituita e chiusa immediatamente. (Ibeb67)- L'accesso a
viewModelScope
di unViewModel
ora è 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
viene ritirata. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Sono state aggiunte le API
dropUnlessResumed
edropUnlessStarted
, che consentono di eliminare i clic o altri eventi che si verificano anche dopo cheLifecycleOwner
è sceso al di sotto del valoreLifecycle.State
specificato. 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-ktx
sono state spostate nel modulo del ciclo di vita di base. (Id787b, b/274800183) - Le estensioni Kotlin
lifecycle-runtime-ktx
sono state spostate nel modulo del ciclo di vita di base. (Ic3686, b/274800183) - Le estensioni Kotlin
lifecycle-livedata-core-ktx
sono state spostate nel modulo del ciclo di vita di base. (I54a3d, b/274800183)
Compatibilità con Kotlin Multiplatform
- Le API del ciclo di vita principali in
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
eLifecycleRegistry
ora vengono fornite in artefatti compatibili con Kotlin Multiplatform. (b/317249252)
Modifiche alle API
- La chiamata di
LifecycleStartEffect
eLifecycleResumeEffect
senza una chiave ora genera un errore, seguendo la stessa convenzione dell'APIDisposableEffect
che queste API rispecchiano. (Ib0e0c, b/323518079) ViewModel
ora utilizzaAutoCloseable
anziché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
viene ritirata. La versione 2.8.0-alpha01 contiene questi commit.
Nuove funzionalità
ViewModel
ora supporta l'aggiunta di oggettiCloseable
con unkey
che consente di recuperarli tramitegetCloseable()
. (I3cf63)
Versione 2.7
Versione 2.7.0
10 gennaio 2024
androidx.lifecycle:lifecycle-*:2.7.0
viene ritirata. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
TestLifecycleOwner
ora include una funzione di sospensionesetCurrentState()
che garantisce che la modifica dello stato e tutti i callbackLifecycleObserver
vengano 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
LiveData
dimap
eswitchMap
ora rispecchiano il comportamento didistinctUntilChanged
: seLiveData
ha un valorevalue
impostato, la funzionemap
/switchMap
verrà chiamata immediatamente per compilare il valorevalue
del valoreLiveData
restituito. 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'origineLiveData
verranno applicati solo dopo l'inizio dell'osservazione diLiveData
. - Questa release corregge un problema per cui
SavedStateHandle
non ripristinava correttamente le classiParcelable
personalizzate 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
,getLiveData
egetStateFlow
ora indica specificamente questa limitazione. - Le regole di conservazione di ProGuard associate a
LifecycleObserver
sono state rimosse. Ciò significa che il codice protetto che vuole utilizzare le API tramite reflection (ad esempio utilizzando l'annotazione@OnLifecycleEvent
da 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 unFlow
diLifecycle.Event
tramite il metodo di estensioneLifecycle.asFlow()
. - Gli utenti di Jetpack Compose ora possono utilizzare
LifecycleEventEffect
per 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
LifecycleStartEffect
eLifecycleResumeEffect
per gestire coppie di eventi, rispettivamente da avviato a interrotto e da ripreso a messo in pausa. Questa API rispecchia quella presente inDisposableEffect
ed è 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.State
può ora essere osservato tramite la proprietàLifecycle.currentStateFlow
, che restituisce unStateFlow
in cuivalue
è l'attualeLifecycle.State
. - Gli utenti di Jetpack Compose possono utilizzare l'estensione
Lifecycle.currentStateAsState()
per esporre direttamenteLifecycle.State
comeState
di 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
viene ritirata. La versione 2.7.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
SavedStateHandle
non ripristinava correttamente le classiParcelable
personalizzate 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
,getLiveData
egetStateFlow
ora indica specificamente questa limitazione. (I0b55a)
Versione 2.7.0-rc01
15 novembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
viene ritirata. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
LifecycleStartEffect
eLifecycleResumeEffect
ora 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
viene ritirata. La versione 2.7.0-alpha03 contiene questi commit.
Nuove funzionalità
lifecycle-runtime-testing
ora contiene un nuovo controllo Lint per evitare di impostareLifecycle.State
diTestLifecycleOwner
utilizzando il campocurrentState
all'interno di una coroutine. Il controllo Lint ora suggerisce la sospensione disetCurrentState
, che consente di impostareLifecycle.State
senza blocchi. (Icf728, b/297880630)
Correzioni di bug
- È stato risolto un problema con
LiveData.switchMap
per cui la restituzione della stessa istanza diLiveData
sia nella chiamata iniziale che in una chiamata successiva impediva l'aggiunta dell'istanza diLiveData
come origine. (Ibedcba7)
Versione 2.7.0-alpha02
6 settembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
viene ritirata. La versione 2.7.0-alpha02 contiene questi commit.
Nuove funzionalità
TestLifecycleOwner
ora include la funzione di sospensionesetCurrentState()
per dare agli utenti la possibilità di utilizzareTestLifecycleOwner
all'interno di una coroutine come quella fornita darunTest
. (I329de, b/259344129)
Modifiche alle API
- Tutti i file dei moduli
lifecycle-livedata-ktx
sono stati spostati nel modulo principalelifecycle-livedata
. (I10c6f, b/274800183)
Modifiche al comportamento
- Le estensioni
LiveData.map()
eLiveData.switchMap()
ora impostanovalue
diLiveData
restituito seLiveData
precedente 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()
diViewModel
ora chiude immediatamenteCloseable
seViewModel
ha già ricevuto una chiamata aonCleared()
. (I4712e, b/280294730)
Correzioni di bug
- Da Lifecycle
2.6.2
: è stato risolto un problema per cuiSavedStateHandle
non veniva ripristinato correttamente dopo l'interruzione del processo se lo stato veniva ripristinato,save()
veniva chiamato senza salvare effettivamente lo stato nelSavedStateRegistry
principale e poi lo stato veniva ripristinato di nuovo. Questo corregge l'interazione trarememberSaveable
eNavHost
di Navigation Compose. (aosp/2729289)
Versione 2.7.0-alpha01
26 luglio 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
viene ritirata. La versione 2.7.0-alpha01 contiene questi commit.
Modifiche alle API
Lifecycle.State
ora è osservabile tramite Compose tramiteLifecycle.currentStateFlow
, che restituisce unStateFlow
in cuivalue
è l'attualeLifecycle.State
. (Ib212d, b/209684871)- Ora gli
Lifecycle.Event
possono essere osservati comeFlow
conLifecycle.asFlow().
(If2c0f, b/176311030) - È stata aggiunta l'API
LifecycleResumeEffect
per eseguire iSideEffect
di Compose in base ai callback degli eventiLifecycle.Event.ON_RESUME
eLifecycle.Event.ON_PAUSE
. (I60386, b/235529345) - È stata aggiunta l'API
LifecycleStartEffect
per eseguire i callback degli eventiSideEffect
basati suLifecycle.Event.ON_START
eLifecycle.Event.ON_STOP
. (I5a8d1, b/235529345) - È stata aggiunta l'API
LifecycleEventEffect
per eseguireSideEffect
di Compose in base aLifecycle.Event
. (Ic9794, b/235529345) - L'estensione
Lifecycle.collectAsState()
è stata aggiunta per esporre direttamenteLifecycle.State
comeState
di Compose. È equivalente (e un'alternativa più breve) alifecycle.currentStateFlow.collectAsState()
. (I11015, b/235529345)
Correzioni di bug
- L'estensione
LiveData.distinctUntilChanged()
ora impostavalue
delLiveData
restituito se ilLiveData
precedente ha un valore impostato. Ciò non modifica il comportamento di osservazione: i valori aggiornati della sorgenteLiveData
verranno applicati solo dopo che avrai iniziato a osservareLiveData
restituito dadistinctUntilChanged()
. (Ib482f) - Le regole di conservazione di ProGuard associate a
LifecycleObserver
sono 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
viene ritirata. La versione 2.6.2 contiene questi commit.
Correzioni di bug
- È stato corretto un problema a causa del quale
SavedStateHandle
non veniva ripristinato correttamente dopo l'interruzione del processo se lo stato veniva ripristinato,save()
veniva chiamato senza salvare effettivamente lo stato nelSavedStateRegistry
principale e poi lo stato veniva ripristinato di nuovo. Questo corregge l'interazione trarememberSaveable
eNavHost
di Navigation Compose. (aosp/2729289)
Versione 2.6.1
22 marzo 2023
androidx.lifecycle:lifecycle-*:2.6.1
viene ritirata. La versione 2.6.1 contiene questi commit.
Aggiornamenti delle dipendenze
lifecycle-viewmodel-savedstate
ora 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
viene ritirata. La versione 2.6.0 contiene questi commit.
Modifiche importanti dalla versione 2.5.0
LiveData
ora include una nuova proprietàisInitialized
che indica se è mai stato impostato un valore esplicito perLiveData
, consentendoti di distinguere traliveData.value
che restituiscenull
perché non è mai stato impostato alcun valore o un valorenull
esplicito.MediatorLiveData
ora include un costruttore per impostare un valore iniziale.- È stata aggiunta una nuova estensione il giorno
StateFlow
e il giornoFlow
dicollectAsStateWithLifecycle()
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.launchWhenX
eLifecycle.whenX
sono 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 temporanea del lavoro, consulta questa spiegazione sul motivo per cui questa operazione è intrinsecamente non sicura. - Conversione di 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 |
- La nullabilità del metodo
onChanged
di unObserver
creato in Kotlin ora corrisponde alla nullabilità del tipo generico. Se vuoi cheObserver.onChanged()
accetti un tipo nullable, devi creare un'istanza diObserver
con 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
,ServiceLifecycleDispatcher
eProcessLifecycleOwner
Versione 2.6.0-rc01
22 febbraio 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
viene ritirata. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- L'estensione
LiveData.distinctUntilChanged()
ora impostavalue
delLiveData
restituito se ilLiveData
precedente ha un valore impostato. Ciò non modifica il comportamento di osservazione: i valori aggiornati della sorgenteLiveData
verranno applicati solo dopo che avrai iniziato a osservareLiveData
restituito dadistinctUntilChanged()
. (Ib482f)
Versione 2.6.0-beta01
8 febbraio 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
viene ritirata. 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àlifecycle
anziché 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àviewModelStore
anziché implementare la funzionegetViewModelStore()
precedente. (I86409, b/240298691)- L'estensione Kotlin su
LifecycleOwner
che fornisce il campolifecycleScope
è stata spostata nell'artefattolifecycle-common
dalifecycle-runtime-ktx
. (I41d78, b/240298691) - L'estensione Kotlin su
Lifecycle
che fornisce il campocoroutineScope
è stata spostata nell'artefattolifecycle-common
dalifecycle-runtime-ktx
. (Iabb91, b/240298691)
Versione 2.6.0-alpha05
25 gennaio 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
viene ritirata. 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.Function
sono obsolete e sostituite dalle versioni che accettano unFunction1
Kotlin. 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 suView
diandroidx.lifecycle.setViewTreeViewModelStoreOwner
eandroidx.lifecycle.findViewTreeViewModelStoreOwner
per 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àdefaultViewModelProviderFactory
edefaultViewModelCreationExtras
anziché implementare le funzioni corrispondenti precedenti. (Iaed9c, b/240298691) Observer
è ora scritto in Kotlin. Il suo metodoonChanged()
ora utilizza il nomevalue
per il parametro. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
eProcessLifecycleOwner
sono 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
viene ritirata. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
LiveData
ora include una nuova proprietàisInitialized
che indica se è mai stato impostato un valore esplicito perLiveData
, consentendoti di distinguere traliveData.value
che restituiscenull
perché non è mai stato impostato alcun valore o un valorenull
esplicito. (Ibd018)
Modifiche alle API
- Le API
collectAsStateWithLifecycle()
dilifecycle-runtime-compose
non sono più in stato sperimentale. (I09d42, b/258835424) - I metodi
Lifecycle.launchWhenX
eLifecycle.whenX
sono 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 suView
diandroidx.lifecycle.setViewTreeLifecycleOwner
eandroidx.lifecycle.findViewTreeLifecycleOwner
per 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-ktx
sono state spostate nel modulolifecycle-reactivestreams
e 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
,LifecycleObserver
eViewModelStore
sono ora scritti in Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Correzioni di bug
SavedStateHandle
non si arresta più in modo anomalo con unClassCastException
quando chiamaget()
con il tipo di classe errato. (I6ae7c)
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
viene ritirata. 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
viene ritirata. La versione 2.6.0-alpha02 contiene questi commit.
Modifiche alle API
MediatorLiveData
ora include un costruttore per impostare un valore iniziale. (Ib6cc5, b/151244085)
Correzioni di bug
- Gli artefatti
Lifecycle
ora 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 - Ora
FlowLiveData.asFlow()
crea uncallbackFlow
anziché utilizzare la propria implementazioneChannel
per garantire la sicurezza dei thread e la conservazione del contesto. (I4a8b2, b/200596935) - La funzione
FlowLiveData
diasLiveData
ora manterrà il valore iniziale di unStateFlow
durante la creazione del nuovo oggettoLiveData
. (I3f530, b/157380488) - Da Lifecycle
2.5.1
: le implementazioni personalizzate diAndroidViewModelFactory
ora chiamano correttamente la funzionecreate(modelClass)
quando si utilizza il costruttore stateful conLifecycle
2.4+ (I5b315, b/238011621)
Versione 2.6.0-alpha01
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
viene ritirata. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova estensione il giorno
StateFlow
e il giornoFlow
dicollectAsStateWithLifecycle
che raccoglie i dati dai flussi e ne rappresenta l'ultimo valore 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
viene ritirata. La versione 2.5.1 contiene questi commit.
Correzioni di bug
- Le implementazioni personalizzate di
AndroidViewModelFactory
ora chiamano correttamente la funzionecreate(modelClass)
quando utilizzano il costruttore con statoAndroidViewModelFactory
conLifecycle
2.4+. (I5b315, b/238011621)
Versione 2.5.0
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0
viene ritirata. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
SavedStateHandle
ora offre un'APIgetStateFlow()
che restituisce unStateFlow
Kotlin per monitorare le modifiche dei valori in alternativa all'utilizzo diLiveData
.ViewModel CreationExtras: quando scrivi un
ViewModelProvider.Factory
personalizzato, non è più necessario estendereAndroidViewModelFactory
oAbstractSavedStateViewModelFactory
per accedere rispettivamente a unApplication
o a unSavedStateHandle
. Questi campi vengono invece forniti a ogni sottoclasseViewModelProvider.Factory
comeCreationExtras
tramite il nuovo overload dicreate
:create(Class<T>, CreationExtras)
. Questi extra vengono forniti automaticamente dall'attività o dal fragment quando utilizzi rispettivamente Activity1.5.0
e 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-viewmodel
ora fornisce unviewModelFactory
DSL Kotlin che ti consente di definireViewModelProvider.Factory
in termini di uno o più inizializzatori lambda, uno per ogni classeViewModel
specifica supportata dalla tua factory personalizzata, utilizzandoCreationExtras
come 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-compose
ora offre un'APIviewModel()
che accetta una factory lambda per la creazione di un'istanzaViewModel
senza richiedere la creazione di unViewModelProvider.Factory
personalizzato.// 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-compose
ora contiene nuove API sperimentali inSavedStateHandle.saveable
che consentono un comportamento simile arememberSaveable
supportato daSavedStateHandle
di 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ù oggettiCloseable
all'ViewModel
che verrà chiuso quando l'ViewModel
viene 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
CoroutineScope
che 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
ViewModel
mantenendo 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.State
daINITIALIZED
aDESTROYED
ora genererà sempre unIllegalStateException
indipendentemente dal fatto cheLifecycle
abbia un osservatore allegato. LifecycleRegistry
ora cancellerà i suoi osservatori quando raggiunge lo statoDESTROYED
.
Versione 2.5.0-rc02
15 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
viene ritirata. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
ViewModelProvider
non 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
viene ritirata. La versione 2.5.0-rc01 contiene questi commit.
Correzioni di bug
MediatorLiveData.addSource()
ora genera unNullPointerException
quando viene passata un'originenull
anziché propagare l'originenull
agli osservatori.(Ibd0fb, b/123085232)
Versione 2.5.0-beta01
20 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
viene ritirata. La versione 2.5.0-beta01 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti delegati della proprietà
SavedStateHandle.saveable
per 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
NavHost
all'interno di un altroNavHost
in una scheda di navigazione inferiore non principale comportava unIllegalStateException
quando si utilizzavano più back stack. (I11bd5, b/228865698)
Versione 2.5.0-alpha06
6 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
viene ritirata. La versione 2.5.0-alpha06 contiene questi commit.
Nuove funzionalità
- Aggiungi l'overload sperimentale di
MutableState
aSavedStateHandle.saveable
per parità conrememberSaveable
(I38cfe, b/224565154)
Modifiche alle API
CreationExtras
ora è astratto anziché sigillato. (Ib8a7a)
Correzioni di bug
- È stato corretto un errore
IllegalStateException: Already attached to lifecycleOwner
causato daSavedStateHandleController
. (I7ea47, b/215406268)
Versione 2.5.0-alpha05
23 marzo 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
viene ritirata. La versione 2.5.0-alpha05 contiene questi commit.
Nuove funzionalità
- Il modulo
lifecycle-viewmodel-compose
ora fornisceSavedStateHandleSaver
, un'API sperimentale che garantisce che i valori in unSavedStateHandle
siano 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
SavedStateViewFactory
ora supporta l'utilizzo diCreationExtras
anche 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
viene ritirata. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche alle API
SavedStateHandle
ora offre un'APIgetStateFlow()
che restituisce unStateFlow
Kotlin 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
viene ritirata. 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ù oggettiCloseable
aViewModel
che verrà chiuso quandoViewModel
viene cancellato senza richiedere alcun intervento manuale inonCleared()
. (I55ea0) lifecycle-viewmodel
ora fornisce unInitializerViewModelFactory
che ti consente di aggiungere lambda per la gestione di particolari classiViewModel
, utilizzandoCreationExtras
come origine dati principale. (If58fc, b/216687549)lifecycle-viewmodel-compose
ora offre un'APIviewModel()
che accetta una factory lambda per creare un'istanzaViewModel
senza richiedere la creazione di unViewModelProvider.Factory
personalizzato. (I97fbb, b/216688927)
Modifiche alle API
- Ora puoi creare un
ViewModel
conCreationExtras
tramitelifecycle-viewmodel-compose
. (I08887, b/216688927)
Modifiche al funzionamento
- Il tentativo di spostare
Lifecycle.State
daINITIALIZED
aDESTROYED
ora genererà sempre unIllegalStateException
indipendentemente dal fatto cheLifecycle
abbia un osservatore collegato. (I7c390, b/177924329) LifecycleRegistry
ora 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
viene ritirata. La versione 2.5.0-alpha02 contiene questi commit.
Modifiche alle API
SavedStateHandle
eSavedStateViewModelFactory
sono 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
LiveData
switchMap
ora può avere un output Nullable. (I40396, b/132923666) - Le estensioni
LiveData
-ktx ora sono annotate con@CheckResult
per garantire che il risultato venga utilizzato quando vengono chiamate queste funzioni. (Ia0f05, b/207325134)
Modifiche al funzionamento
- Ora
SavedStateHandle
memorizza correttamente defaultValue quando non esiste alcun valore per la chiave specificata. (I1c6ce, b/178510877)
Correzioni di bug
- Da Lifecycle
2.4.1
: è stato aggiornatolifecycle-process
in modo che dipenda da Startup 1.1.1 per garantire che le correzioni che impediscono aProcessLifecycleInitializer
di generare unStartupException
siano disponibili per impostazione predefinita. (Ib01df, b/216490724) - Ora viene visualizzato un messaggio di errore migliorato quando le classi
AndroidViewModel
personalizzate hanno parametri nell'ordine errato e si tenta di creare unViewModel
. (I340f7, b/177667711) - Ora puoi creare un modello di visualizzazione tramite
CreationExtras
utilizzandoAndroidViewModelFactory
senza impostare un'applicazione. (I6ebef, b/217271656)
Versione 2.5.0-alpha01
26 gennaio 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
viene ritirata. 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 overload 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
: questoString
fornisce l'accesso alla chiave personalizzata che hai passato aViewModelProvider.get()
.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
fornisce l'accesso al corsoApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
fornisce l'accesso aSavedStateRegistryOwner
utilizzato per creare questo ViewModel.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
fornisce l'accesso aViewModelStoreOwner
utilizzato per creare questo ViewModel.SavedStateHandleSupport.DEFAULT_ARGS_KEY
fornisce l'accesso all'Bundle
degli argomenti che devono essere utilizzati 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 componenti aggiuntivi verranno resi disponibili automaticamente per la 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
SavedStateHandle
veniva visualizzato di nuovo dopo l'interruzione e la ricreazione del processo, anche se era stato rimosso specificamente dalSavedStateHandle
. Di conseguenza,SavedStateHandle
non unirà più i valori predefiniti e i valori 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
viene ritirata. 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 unSavedStateHandle
veniva visualizzato di nuovo dopo l'interruzione e la ricreazione del processo, anche se era stato rimosso in modo specifico dalSavedStateHandle
. Di conseguenza,SavedStateHandle
non unirà più i valori predefiniti e i valori ripristinati, ma utilizzerà solo i valori ripristinati come fonte di verità. (I53a4b) lifecycle-process
ora dipende da Androidx Startup 1.1.1, che ha corretto una regressione in cui l'utilizzo diProcessLifecycleInitializer
causava unStartupException
. (b/216490724)
Versione 2.4.0
27 ottobre 2021
androidx.lifecycle:lifecycle-*:2.4.0
viene ritirata. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
@OnLifecycleEvent
è stato ritirato. Utilizza inveceLifecycleEventObserver
oDefaultLifecycleObserver
.- È stata aggiunta la raccolta
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.create
non 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-java8
alifecycle.lifecycle-common
.lifecycle.lifecycle-common-java8
non fornisce più funzionalità aggiuntive rispetto alifecycle.lifecycle-common
, pertanto la dipendenza da questo elemento può essere sostituita dalifecycle.lifecycle-common
.- L'API non coroutine di
lifecycle-viewmodel-ktx
è stata spostata nel modulolifecycle-viewmodel
. lifecycle-process
ora utilizzaandroidx.startup
per inizializzareProcessLifecycleOwner
.In precedenza, questa operazione veniva eseguita da
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Se in passato hai utilizzato
tools:node="remove"
ContentProvider
per inizializzare il ciclo di vita del processo, devi invece 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
viene ritirata. La versione 2.4.0-beta01 contiene questi commit.
Modifiche alle API
@OnLifecycleEvent
è stato ritirato.LifecycleEventObserver
oDefaultLifecycleObserver
. (I5a8fa)- DefaultLifecycleObserver è stato spostato da
androidx.lifecycle.lifecycle-common-java8
aandroidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
non 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
viene ritirata. 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.create
non consente più i generici che accettano valori null. (I9b9f6)
Modifiche al comportamento
Lifecycle.repeatOnLifecycle
:block
ora 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
viene ritirata. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un nuovo controllo lint
RepeatOnLifecycleWrongUsage
alifecycle-runtime-ktx
che rileva quandorepeateOnLifecycle
viene utilizzato in modo errato inonStart()
oonResume()
. (706078, b/187887400)
Modifiche alle API
- L'API
LifecycleOwner.addRepeatingJob
viene rimossa a favore diLifecycle.repeatOnLifecycle
che rispetta la concorrenza strutturata ed è più facile da gestire. (I4a3a8) - Rendi pubblico
ProcessLifecycleInitializer
in modo che altriandroidx.startup.Initializer
possano utilizzarli come dipendenze. (I94c31)
Correzioni di bug
- È stato risolto un problema con il controllo lint di
NullSafeMutableLiveData
quando il campo ha modificatori. (#147, b/183696616) - È stato risolto un altro problema con il controllo lint
NullSafeMutableLiveData
quando si utilizzano i generici. (#161, b/184830263)
Contributo esterno
- Grazie maxsav per aver migliorato il controllo lint di
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
viene ritirata. La versione 2.4.0-alpha01 contiene questi commit.
Modifiche al comportamento
lifecycle-process
ora utilizzaandroidx.startup
per inizializzareProcessLifecycleOwner
.In precedenza, questa operazione veniva eseguita da
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.Se in passato hai utilizzato
tools:node="remove"
ContentProvider
per inizializzare il ciclo di vita del processo, devi invece 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.flowWithLifecycle
che 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
- Da Lifecycle 2.3.1: la regola di linting
NonNullableMutableLiveData
ora 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
viene ritirata. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API che causano interruzioni
viewModel()
ora accetta unViewModelStoreOwner
facoltativo, 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
viene ritirata. La versione 1.0.0-alpha06 contiene questi commit.
Aggiornato per essere compatibile con Compose versione 1.0.0-beta08
.
Versione 1.0.0-alpha05
18 maggio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
- Aggiornato per essere compatibile con Compose versione
1.0.0-beta07
.
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
viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle dipendenze
- Questa versione consente a
androidx.hilt:hilt-navigation-compose
eandroidx.navigation:navigation-compose
di sincronizzare le dipendenze suandroidx.compose.compiler:compiler:1.0.0-beta04
eandroidx.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
viene ritirata. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.current
ora restituisce unViewModelStoreOwner
annullabile 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
viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner
ora dispone diprovides
funzioni 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
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il componente componibile
viewModel()
eLocalViewModelStoreOwner
sono stati spostati daandroidx.compose.ui.viewinterop
a questo artefatto nel pacchettoandroidx.lifecycle.viewmodel.compose
. (I7a374)
Versione 2.3.1
Lifecycle Version 2.3.1
24 marzo 2021
androidx.lifecycle:lifecycle-*:2.3.1
viene ritirata. La versione 2.3.1 contiene questi commit.
Correzioni di bug
- La regola di lint
NonNullableMutableLiveData
ora 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
viene ritirata. La versione 2.3.0 contiene questi commit.
Modifiche importanti dalla versione 2.2.0
- Supporto di
SavedStateHandle
per le classi non serializzabili:SavedStateHandle
ora supporta la serializzazione differita consentendoti di chiamaresetSavedStateProvider()
per una determinata chiave, fornendo unSavedStateProvider
che riceverà un callback asaveState()
quando aSavedStateHandle
viene chiesto di salvare il proprio stato. Consulta la sezione Salvataggio di classi non serializzabili. - Applicazione del comportamento del ciclo di vita:
- LifecycleRegistry ora applica
DESTROYED
come stato terminale. LifecycleRegistry
ora 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 oggettiLifecycleRegistry
di 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 questoLifecycleRegistry
da 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.Event
per generareEvent
dato unState
e la direzione di transizione. È stato aggiunto il metodogetTargetState()
che fornisce lo statoState
a cui il ciclo di vita passerà immediatamente dopo lo statoEvent
. withStateAtLeast
: sono state aggiunte le APILifecycle.withStateAtLeast
che 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 rispettivamenteLifecycleOwner
eViewModelStoreOwner
, data un'istanzaView
. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0
e Fragment1.3.0
e ad AppCompat 1.3.0-alpha01 o versioni successive. Le estensioni KotlinfindViewTreeLifecycleOwner
efindViewTreeViewModelStoreOwner
sono disponibili rispettivamente inlifecycle-runtime-ktx
elifecycle-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
viene ritirata. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- Il metodo
keys()
diSavedStateHandle
ora è 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
viene ritirata. 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
liveData
e 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
viene ritirata. 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
viene ritirata. La versione 2.3.0-alpha06 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti metodi helper statici di
downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
aLifecycle.Event
per generareEvent
dato unState
e la direzione della transizione. È stato aggiunto il metodogetTargetState()
che fornisce lo statoState
a cui il ciclo di vita passerà immediatamente dopo lo statoEvent
. (I00887) - Sono state aggiunte le API
Lifecycle.withStateAtLeast
che 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
DESTROYED
come stato terminale. (I00887) LifecycleRegistry
ora 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 oggettiLifecycleRegistry
di 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 questoLifecycleRegistry
da thread diversi (Ie7280, b/137392809).
Correzioni di bug
- È stato risolto un arresto anomalo in
NullSafeMutableLiveData
. (b/159987480) - È stato corretto un
ObsoleteLintCustomCheck
per 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
viene ritirata. La versione 2.3.0-alpha05 contiene questi commit.
Correzioni di bug
LiveData
ora 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
viene ritirata. La versione 2.3.0-alpha04 contiene questi commit.
Correzioni di bug
- Risolto un arresto anomalo nel controllo
NonNullableMutableLiveData
Lint. (b/157294666) - Il controllo
NonNullableMutableLiveData
Lint ora copre molti più casi in cui è stato impostato un valorenull
su unMutableLiveData
con un parametro di tipo non nullo. (b/156002218)
Versione 2.3.0-alpha03
20 maggio 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
vengono rilasciati. La versione 2.3.0-alpha03 contiene questi commit.
Nuove funzionalità
SavedStateHandle
ora supporta la serializzazione differita consentendoti di chiamaresetSavedStateProvider()
per una determinata chiave, fornendo unSavedStateProvider
che riceverà un callback asaveState()
quando aSavedStateHandle
viene chiesto di salvare il suo stato. (b/155106862)- Una nuova API
ViewTreeViewModelStoreOwner.get(View)
ti consente di recuperare ilViewModelStoreOwner
contenitore dato un'istanzaView
. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
e 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 rilasciati in Lifecycle
2.3.0-alpha01
insieme all'artefattolifecycle-livedata-core-ktx
.MutableLiveData
(b/155323109)
Versione 2.3.0-alpha02
29 aprile 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
viene ritirata. La versione 2.3.0-alpha02 contiene questi commit.
Modifiche alle API
SavedStateViewModelFactory
ora ti consente di passare unApplication
nullo 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
viene ritirata. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Una nuova API
ViewTreeLifecycleOwner.get(View)
ti consente di recuperare ilLifecycleOwner
contenitore dato un'istanzaView
. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Attività1.2.0-alpha01
e Frammento1.3.0-alpha01
. Un'estensione KotlinfindViewTreeLifecycleOwner
è disponibile inlifecycle-runtime-ktx
. (aosp/1182361, aosp/1182956) - È stato aggiunto un nuovo controllo Lint che ti avvisa quando imposti un valore
null
su unMutableLiveData
definito in Kotlin come non null. Questa opzione è disponibile quando utilizzi gli artefattilivedata-core-ktx
olivedata-ktx
. (aosp/1154723, aosp/1159092) - È disponibile un nuovo artefatto
lifecycle-runtime-testing
che fornisce unTestLifecycleOwner
che implementaLifecycleOwner
e fornisce unLifecycle
modificabile e thread-safe. (aosp/1242438)
Correzioni di bug
- L'artefatto
lifecycle-runtime
ora 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
viene ritirata. La versione 2.2.0 contiene questi commit.
Lifecycle ViewModel SavedState ora condivide la stessa versione degli altri artefatti del ciclo di vita. 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
viene ritirata. 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-ktx
aggiunge 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. - Deprecazione di
ViewModelProviders.of()
:ViewModelProviders.of()
è stato ritirato. Puoi passare unFragment
o unFragmentActivity
al nuovo costruttoreViewModelProvider(ViewModelStoreOwner)
per ottenere la stessa funzionalità quando utilizzi Fragment1.2.0
. lifecycle-extensions
Ritiro dell'artefatto: con il ritiro diViewModelProviders.of()
sopra indicato, questa release segna il ritiro dell'ultima API inlifecycle-extensions
e 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-service
se utilizziLifecycleService
elifecycle-process
se utilizziProcessLifecycleOwner
) anzichélifecycle-extensions
, in quanto non verrà rilasciata una versione futura di2.3.0
dilifecycle-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
viene ritirata. La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- È stato corretto un errore che si verificava quando un
ViewModel
simulato veniva archiviato inViewModelStore
e interrogato in un secondo momento con la factory predefinita. - Correggi un utilizzo di
Dispatchers.Main.immediate
inlaunchWhenCreated
e 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
viene ritirata. 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
viene ritirata. La versione 2.2.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
launchWhenCreated
e i metodi correlati venivano eseguiti un frame dopo il metodo del ciclo di vita associato a causa dell'utilizzo diDispatchers.Main
anziché 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
viene ritirata. La versione 2.2.0-beta01 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione introdotto in Lifecycle 2.2.0-alpha05 nell'ordinamento di
ProcessLifecycleOwner
e nel passaggio diLifecycleOwner
dell'attività a stato avviato e ripreso sui dispositivi Android 10. (aosp/1128132) - È stata corretta una regressione introdotta in Lifecycle
2.2.0-alpha05
che causava unNullPointerException
quando si utilizzava la versione2.0.0
o2.1.0
dilifecycle-process
. (b/141536990)
Versione 2.2.0-alpha05
18 settembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
viene ritirata. La versione 2.2.0-alpha05 contiene questi commit.
Correzioni di bug
- È stata corretta una race condition nel builder di LiveData delle coroutine. b/140249349
Versione 2.2.0-alpha04
5 settembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
e l'implementazione sottostante diliveData
ora utilizzanoDispatchers.Main.immediate
anziché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
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Le implementazioni di
ViewModelStoreOwner
ora possono implementare facoltativamenteHasDefaultViewModelProviderFactory
per fornire unViewModelProvider.Factory
predefinito. Questo è stato fatto per Attività1.1.0-alpha02
, Frammento1.2.0-alpha02
e Navigazione2.2.0-alpha01
. (aosp/1092370, b/135716331)
Modifiche all'API
ViewModelProviders.of()
è stato ritirato. Puoi passare unFragment
o unFragmentActivity
al nuovo costruttoreViewModelProvider(ViewModelStoreOwner)
per ottenere la stessa funzionalità. (aosp/1009889)
Versione 2.2.0-alpha02
2 luglio 2019
androidx.lifecycle:*:2.2.0-alpha02
viene ritirata. 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
liveData
che riceve il parametrotimeout
come tipoDuration
Versione 2.2.0-alpha01
7 maggio 2019
androidx.lifecycle:*:2.2.0-alpha01
viene ritirata. 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
viene ritirata. 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
ViewModel
di accedere allo stato salvato e di contribuire. Questo oggetto può essere ricevuto nel costruttore della classeViewModel
e le fabbriche fornite per impostazione predefinita da Fragment e AppCompatActivity inserirannoSavedStateHandle
automaticamente. - È stata aggiunta AbstractSavedStateViewModelFactory. Ti consente di creare fabbriche personalizzate per i tuoi
ViewModel
e 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
viene ritirata. 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
viene ritirata. 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
viene ritirata. 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
IllegalStateException
durante l'utilizzo diAbstractSavedStateViewModelFactory
. (b/141225984)
ViewModel-SavedState versione 1.0.0-alpha05
18 settembre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche all'API
SavedStateViewModelFactory
non estende piùAbstractSavedStateViewModelFactory
eSavedStateHandle
viene 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
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Modifiche che provocano un errore
lifecycle-viewmodel-savedstate
non dipende più dafragment
e i costruttoriSavedStateViewModelFactory(Fragment)
eSavedStateViewModelFactory(FragmentActivity)
correlati sono stati rimossi.SavedStateViewModelFactory
è ora la fabbrica predefinita per Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
e 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
viene ritirata. 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
viene ritirata. Il log completo dei commit per questa release iniziale è disponibile qui.
Nuove funzionalità
- Ora
ViewModels
può contribuire a savedstate. Per farlo, utilizza la factorySavedStateVMFactory
del view model appena introdotto e il tuo ViewModel deve avere un costruttore che riceve l'oggettoSavedStateHandle
come parametro.
Versione 2.1.0
Modifiche importanti dalla versione 2.0.0
- È stato aggiunto
LifecycleEventObserver
per i casi in cui è necessario un flusso di eventi del ciclo di vita. Si tratta di un'API pubblica anziché di una classeGenericLifecycleObserver
nascosta. - Sono state aggiunte estensioni KTX per i metodi
LiveData.observe
eTransformations.*
. - È stato aggiunto
Transformations.distinctUntilChanged
, che crea un nuovo oggetto LiveData che non emette un valore finché il valore dell'origineLiveData
non è 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
viene ritirata. 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
viene ritirata. 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
liveData
per trasformazioni e osservazioni, l'inizializzazioneViewModel
con 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
viene ritirata. 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
viene ritirata. 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.Factory
non 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
viene ritirata.
Modifiche all'API
LifecycleRegistry
ora contiene un metodosetCurrentState()
che sostituisce il metodosetState()
, ora deprecato. (aosp/880715)
Correzioni di bug
- È stato risolto un problema per cui le istanze di mock
ViewModel
si arrestavano in modo anomalo quando veniva cancellato ilViewModelStore
contenitore. b/122273087
Versione 2.1.0-alpha01
17 dicembre 2018
androidx.lifecycle 2.1.0-alpha01
viene ritirata.
Nuove funzionalità
- È stato aggiunto
LifecycleEventObserver
per i casi in cui è necessario un flusso di eventi del ciclo di vita. Si tratta di un'API pubblica anziché di una classeGenericLifecycleObserver
nascosta. - Sono state aggiunte estensioni KTX per i metodi
LiveData.observe
eTransformations.*
. - È stato aggiunto il metodo
Transformations.distinctUntilChanged
. Crea un nuovo oggettoLiveData
che 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 ricevekey
eClass
nel 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 ad AndroidX
Per le versioni precedenti di Lifecycle di AndroidX 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 la paginazione.
Versione 1.1.0
22 gennaio 2018
Modifiche all'imballaggio
Sono ora disponibili nuove dipendenze molto più piccole:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- I campi
LifecycleActivity
eLifecycleFragment
ritirati sono stati rimossi. UtilizzaFragmentActivity
,AppCompatActivity
o supportaFragment
. - Sono state aggiunte
@NonNull
annotazioni aViewModelProviders
eViewModelStores
- Il costruttore
ViewModelProviders
è stato ritirato. Utilizza direttamente i relativi metodi statici. ViewModelProviders.DefaultFactory
è stato ritirato. UtilizzaViewModelProvider.AndroidViewModelFactory
.- È stato aggiunto il metodo statico
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
per recuperare unFactory
statico adatto alla creazione di istanzeViewModel
eAndroidViewModel
.