Ciclo di vita
Questa tabella elenca tutti gli artefatti nel gruppo androidx.lifecycle
.
Elemento | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
ciclo di vita-* | 2.7.0 | - | 2.8.0-beta01 | - |
ciclo di vita-vista-modello-componi | 2.7.0 | - | 2.8.0-beta01 | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza a Ciclo di vita, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Kotlin
trendy
dependencies { def lifecycle_version = "2.7.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.7.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
trendy
dependencies { def lifecycle_version = "2.7.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.7.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 2.8
Versione 2.8.0-beta01
17 aprile 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
viene rilasciato. La versione 2.8.0-beta01 contiene questi commit.
Nuove funzionalità
- L'elemento
lifecycle-runtime-compose
è ora compatibile con Kotlin Multiplatform, spostando il suo codice sucommon
e fornisce un artefatto Android, corrispondente al supporto multipiattaforma perandroidx.compose
. (If7a71, I4f4a0, b/331769623)
Versione 2.8.0-alpha04
3 aprile 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
viene rilasciato. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'elemento
lifecycle-viewmodel-compose
è ora compatibile con Kotlin Multiplatform, spostando il suo codice sucommon
e fornisce un artefatto Android, corrispondente al supporto multipiattaforma diandroidx.compose
. Per soddisfare questa modifica, il metodo componibileviewModel
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 dall'Programma di installazione profili 1.3.1.
Versione 2.8.0-alpha03
20 marzo 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
viene rilasciato. La versione 2.8.0-alpha03 contiene questi commit.
Nuove funzionalità
ViewModel.viewModelScope
è ora un parametro del costruttore con override, che ti consente di inserire il tuo supervisore eSupervisorJob()
o di sostituire il valore predefinito utilizzandobackgroundScope
disponibile all'interno dirunTest
. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Compatibilità multipiattaforma Kotlin
L'artefatto lifecycle-viewmodel
e le API come ViewModel
, ViewModelStore
, ViewModelStoreOwner
e ViewModelProvider
vengono ora spediti in artefatti compatibili con Kotlin Multiplatform. (b/214568825)
Per supportare questa modifica, metodi come quelli su ViewModelProvider
che hanno richiesto un java.lang.Class<T>
ora hanno un metodo equivalente che richiede kotlin.reflect.KClass<T>
.
La compatibilità binaria su Android è stata mantenuta, ma sono state apportate alcune modifiche degne di nota quando si confronta la piattaforma API Android con la piattaforma API comune:
- La creazione di un'istanza
ViewModelProvider
viene ora eseguita tramite i metodiViewModelProvider.create()
anziché chiamare direttamente il relativo costruttore. ViewModelProvider.NewInstanceFactory
eViewModelProvider.AndroidViewModelFactory
sono disponibili solo su Android.- Si consiglia di estendere le fabbriche personalizzate da
ViewModelProvider.Factory
e di utilizzare il metodocreate
che richiede unCreationExtras
o di utilizzare ilviewModelFactory
Kotlin DSL.
- Si consiglia di estendere le fabbriche personalizzate da
- L'utilizzo di
ViewModelProvider
senza un valore di fabbrica personalizzato su piattaforme non JVM comporterà unUnsupportedOperationException
. Sulle piattaforme JVM, la compatibilità viene preservata utilizzando il costruttore no-args ViewModel, se non viene fornito un valore di fabbrica personalizzato. viewModelScope
eseguirà il fallback su unEmptyCoroutineContext
nelle piattaforme in cuiDispatchers.Main
non è disponibile (ad es. Linux).
Modifiche del comportamento
InitializerViewModelFactory
(inclusa la funzione di creazioneviewModelFactory
) ora genererà un valoreIllegalArgumentException
se è già stato aggiunto uninitializer
con lo stessoclazz: KClass<VM : ViewModel>
. (Ic3a36)
Correzioni di bug
- Ora
ViewModel.getCloseable
gestisce le chiavi duplicate: se alla risorsakey
è già associata una risorsaAutoCloseable
, la risorsa precedente verrà sostituita e chiusa immediatamente. (Ibeb67) - L'accesso al
viewModelScope
diViewModel
è ora sicuro tramite thread. (If4766, b/322407038)
Contributi esterni
LocalLifecycleOwner
è passata dalla UI di Compose a lifestyle-runtime-compose in modo che le sue API helper basate su Compose possano essere utilizzate al di fuori della UI di Compose. Ringraziamo 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 rilasciato. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Sono state aggiunte le API
dropUnlessResumed
edropUnlessStarted
che consentono di ridurre i clic o altri eventi che si verificano anche quando il valore diLifecycleOwner
è sceso al di sotto del valoreLifecycle.State
specificato. Ad esempio, puoi utilizzarlo con Scrittura navigazione per evitare di gestire gli eventi di clic dopo che è già iniziata la transizione a un'altra schermata:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Conversioni di Kotlin
ViewModel
è ora scritto in Kotlin (I16f26, b/214568825)- Le estensioni kotlin
lifecycle-viewmodel-ktx
sono state ora spostate nel modulo Ciclo di vita di base. (Id787b, b/274800183) - Le estensioni kotlin
lifecycle-runtime-ktx
sono state ora spostate nel modulo Ciclo di vita di base. (Ic3686, b/274800183) - Le estensioni kotlin
lifecycle-livedata-core-ktx
sono state ora spostate nel modulo Ciclo di vita di base. (I54a3d, b/274800183).
Compatibilità multipiattaforma Kotlin
- Le API del ciclo di vita principali in
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
eLifecycleRegistry
ora vengono spedite in elementi compatibili con Kotlin Multiplatform. (b/317249252)
Modifiche alle API
- La chiamata a
LifecycleStartEffect
eLifecycleResumeEffect
senza una chiave ora costituisce un errore, seguendo la stessa convenzione dell'APIDisposableEffect
di cui queste API eseguono il mirroring. (Ib0e0c, b/323518079). ViewModel
ora utilizzaAutoCloseable
anzichéCloseable
. Questa è una modifica compatibile con le versioni precedenti. (I27f8e, b/214568825).- Obsoleto di
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
a favore diLiveData.toPublisher(lifecycleOwner)
. (Iabe29, b/262623005).
Contributi esterni
- Ringraziamo Ivan Matkov di Jetbrains per aver contribuito al trasferimento del ciclo di vita sul modello Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Versione 2.8.0-alpha01
24 gennaio 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
viene rilasciato. 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 rilasciato. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
TestLifecycleOwner
ora include una funzione di sospensionesetCurrentState()
che assicura che il cambiamento dello stato e tutti i callbackLifecycleObserver
vengano completati prima di tornare. In particolare, a differenza dell'impostazione diretta della proprietàcurrentState
, questa operazione non utilizzarunBlocking
, il che ne rende sicuro l'utilizzo all'interno di una coroutine come quella fornita darunTest
.- Le estensioni
LiveData
dimap
eswitchMap
ora riflettono il comportamento didistinctUntilChanged
. SeLiveData
ha un insieme divalue
, la funzionemap
/switchMap
verrà chiamata immediatamente per compilare il valorevalue
delLiveData
restituito. Ciò garantisce che il valore iniziale verrà impostato come parte della prima composizione (se utilizzato conobserveAsState()
), ma non modifica il comportamento di osservazione: gli aggiornamenti dei valori dall'origineLiveData
verranno comunque applicati solo una volta che inizi a osservare ilLiveData
. - In questa release è stato corretto un problema per cui
SavedStateHandle
non ripristinava correttamente i corsiParcelable
personalizzati dopo l'interruzione del processo e la ricreazione. A causa delle informazioni sul tipo che vengono perse dal framework Android, gli array di Particelle personalizzate richiedono un lavoro aggiuntivo (creazione manuale di un array digitato del tipo giusto) e la documentazione suget
,getLiveData
egetStateFlow
ora chiama in modo specifico questo limite. - Le regole di Keep ProGuard associate a
LifecycleObserver
sono state rimosse. Ciò significa che il codice protetto che vuole utilizzare le API tramite riflessione (ad esempio, utilizzando l'annotazione@OnLifecycleEvent
da tempo deprecata) dovrà fornire regole di conservazione proprie per il caso d'uso specifico.
Osservabilità degli eventi del ciclo di vita
- In alternativa all'utilizzo di
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 rispettivamente le coppie di eventi, rispettivamente di tipo avviato e ripristinato. Questa API rispecchia quella trovata inDisposableEffect
ed è adatta ai casi in cui la modifica apportata quando lo stato aumenta, deve essere annullata quando si torna indietro.
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
dovevalue
è l'attualeLifecycle.State
. - Gli utenti di Jetpack Compose possono utilizzare l'estensione
Lifecycle.currentStateAsState()
per esporre direttamenteLifecycle.State
come ComposeState
. Equivale (e un'alternativa più breve) alifecycle.currentStateFlow.collectAsState()
.
Per saperne di più, consulta Raccolta dello stato del ciclo di vita con i flussi.
Versione 2.7.0-rc02
13 dicembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
viene rilasciato. La versione 2.7.0-rc02 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
SavedStateHandle
non ripristinava correttamente i corsiParcelable
personalizzati dopo l'interruzione del processo e la ricreazione. A causa delle informazioni sul tipo che vengono perse dal framework Android, gli array di Particelle personalizzate richiedono un lavoro aggiuntivo (creazione manuale di un array digitato del tipo giusto) e la documentazione suget
,getLiveData
egetStateFlow
ora chiama in modo specifico questo limite. (I0b55a).
Versione 2.7.0-rc01
15 novembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
viene rilasciato. 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.
- Un picco della versione beta, nessuna modifica importante a questa versione della release.
Versione 2.7.0-alpha03
18 ottobre 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
viene rilasciato. La versione 2.7.0-alpha03 contiene questi commit.
Nuove funzionalità
lifecycle-runtime-testing
ora contiene un nuovo controllo Lint per evitare di impostare il valoreLifecycle.State
diTestLifecycleOwner
utilizzando il campocurrentState
all'interno di una coroutine. Il controllo lint ora suggerisce l'elementosetCurrentState
sospeso, che consente di impostareLifecycle.State
senza bloccare. (Icf728, b/297880630)
Correzioni di bug
- Risolto il problema con
LiveData.switchMap
per cui la restituzione della stessa istanzaLiveData
sia nella chiamata iniziale che in quella successiva impedisce l'aggiunta dell'istanzaLiveData
come origine. (Ibedcba7)
Versione 2.7.0-alpha02
6 settembre 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
viene rilasciato. La versione 2.7.0-alpha02 contiene questi commit.
Nuove funzionalità
TestLifecycleOwner
ora include la funzione di sospensionesetCurrentState()
per offrire agli utenti la possibilità di utilizzareTestLifecycleOwner
dall'interno di una coroutine, ad esempio quella fornita darunTest
. (I329de, b/259344129)
Modifiche alle API
- Tutti i file dei moduli
lifecycle-livedata-ktx
sono stati spostati nel modulolifecycle-livedata
principale. (I10c6f, b/274800183).
Modifiche del comportamento
- Le estensioni
LiveData.map()
eLiveData.switchMap()
ora impostano ilvalue
delLiveData
restituito se l'elementoLiveData
precedente aveva un valore impostato, assicurando che l'utilizzo del risultante LiveData in Jetpack Compose abbia lo stato corretto nella composizione iniziale. (I91d2b, b/269479952). - Il
addCloseable()
diViewModel
ora chiude immediatamenteCloseable
seViewModel
ha già ricevuto una chiamata aonCleared()
. (I4712e, b/280294730)
Correzioni di bug
- Da Ciclo di vita
2.6.2
: è stato risolto il problema per cuiSavedStateHandle
non veniva ripristinato correttamente dopo la morte del processo se lo stato veniva ripristinato,save()
è stato chiamato senza salvare effettivamente lo stato nell'elementoSavedStateRegistry
principale e poi lo stato è stato ripristinato di nuovo. Questa operazione corregge l'interazione trarememberSaveable
eNavHost
di Scrittura di navigazione. (aosp/2729289)
Versione 2.7.0-alpha01
26 luglio 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
viene rilasciato. La versione 2.7.0-alpha01 contiene questi commit.
Modifiche alle API
Lifecycle.State
ora è osservabile tramiteLifecycle.currentStateFlow
, che restituisce unStateFlow
dovevalue
è l'attualeLifecycle.State
. (Ib212d, b/209684871).- Ora è possibile osservare
Lifecycle.Event
comeFlow
conLifecycle.asFlow().
(If2c0f, b/176311030) - L'API
LifecycleResumeEffect
è stata aggiunta per eseguire ComposeSideEffect
in base ai callback degli eventiLifecycle.Event.ON_RESUME
eLifecycle.Event.ON_PAUSE
. (I60386, b/235529345) - L'API
LifecycleStartEffect
è stata aggiunta per eseguire ComposeSideEffect
in base ai callback degli eventiLifecycle.Event.ON_START
eLifecycle.Event.ON_STOP
. (I5a8d1, b/235529345). - L'API
LifecycleEventEffect
è stata aggiunta per eseguire ComposeSideEffect
in base aLifecycle.Event
. (Ic9794, b/235529345) - L'estensione
Lifecycle.collectAsState()
è stata aggiunta per esporre direttamenteLifecycle.State
come ComposeState
. Equivale (e un'alternativa più breve) alifecycle.currentStateFlow.collectAsState()
. (I11015, b/235529345)
Correzioni di bug
- L'estensione
LiveData.distinctUntilChanged()
ora imposta ilvalue
delLiveData
restituito se è stato impostato un valore per ilLiveData
precedente. Il comportamento di osservazione non cambia. I valori aggiornati dall'origineLiveData
verranno comunque applicati solo una volta che inizierai a osservare il valoreLiveData
restituito dadistinctUntilChanged()
. (Ib482f) - Le regole di Keep ProGuard associate a
LifecycleObserver
sono state rimosse. Ciò significa che il codice protetto che vuole utilizzare le API mediante riflessione dovrà fornire le proprie regole di conservazione per il suo caso d'uso specifico. (Ia12fd)
Versione 2.6
Versione 2.6.2
6 settembre 2023
androidx.lifecycle:lifecycle-*:2.6.2
viene rilasciato. La versione 2.6.2 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
SavedStateHandle
non veniva ripristinato correttamente dopo la morte del processo se lo stato veniva ripristinato,save()
veniva chiamato senza salvare effettivamente lo stato nell'elementoSavedStateRegistry
principale e poi lo stato veniva ripristinato di nuovo. Questa operazione corregge l'interazione trarememberSaveable
eNavHost
di Scrittura di navigazione. (aosp/2729289)
Versione 2.6.1
22 marzo 2023
androidx.lifecycle:lifecycle-*:2.6.1
viene rilasciato. La versione 2.6.1 contiene questi commit.
Aggiornamenti delle dipendenze
lifecycle-viewmodel-savedstate
ora dipende da saveState1.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 rilasciato. 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 è stato impostato un valore esplicito nellaLiveData
, consentendoti di distinguere traliveData.value
che restituiscononull
perché non è mai stato impostato alcun valore o perché è stato impostato un valorenull
esplicito.MediatorLiveData
ora include un costruttore per impostare un valore iniziale.- È stata aggiunta una nuova estensione su
StateFlow
eFlow
dicollectAsStateWithLifecycle()
che raccoglie dai flussi e rappresenta il suo valore più recente come stato di scrittura in modo consapevole del ciclo di vita. - I metodi
Lifecycle.launchWhenX
eLifecycle.whenX
sono stati ritirati poiché l'utilizzo di un supervisore in pausa può portare a sprechi di risorse in alcuni casi. È consigliabile utilizzareLifecycle.repeatOnLifecycle
. Per ulteriori informazioni sulla sospensione una tantum del lavoro, leggi questa spiegazione sul motivo per cui non è sicuro. - Conversione di Kotlin: un numero elevato di classi di ciclo di vita è stato convertito in Kotlin. Tutte le classi convertite mantengono la compatibilità binaria con le versioni precedenti. Le seguenti classi presentano modifiche incompatibili con l'origine per i corsi scritti in Kotlin:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
eLifecycleOwner
La tabella seguente fornisce le conversioni di origine per la nuova versione del ciclo di vita.
Ciclo di vita 2.5 | Ciclo di vita 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 |
- Ora il valore nulla del metodo
onChanged
di unObserver
creato in Kotlin corrisponde al valore nulla del metodo generico. Se vuoi cheObserver.onChanged()
accetti un tipo con valori null, devi creare un'istanza diObserver
con un tipo con valore null. - 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 rilasciato. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- L'estensione
LiveData.distinctUntilChanged()
ora imposta ilvalue
delLiveData
restituito se è stato impostato un valore per ilLiveData
precedente. Il comportamento di osservazione non cambia. I valori aggiornati dall'origineLiveData
verranno comunque applicati solo una volta che inizierai a osservare il valoreLiveData
restituito dadistinctUntilChanged()
. (Ib482f)
Versione 2.6.0-beta01
8 febbraio 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
viene rilasciato. La versione 2.6.0-beta01 contiene questi commit.
Conversioni di Kotlin
LifecycleOwner
è ora scritto in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devono sostituire la proprietàlifecycle
anziché implementare la precedente funzionegetLifecycle()
. (I75b4b, b/240298691).ViewModelStoreOwner
è ora a Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devono sostituire la proprietàviewModelStore
anziché implementare la precedente funzionegetViewModelStore()
. (I86409, b/240298691)- L'estensione Kotlin su
LifecycleOwner
che fornisce il campolifecycleScope
è stata spostata nell'elementolifecycle-common
dilifecycle-runtime-ktx
. (I41d78, b/240298691). - L'estensione Kotlin su
Lifecycle
che fornisce il campocoroutineScope
è stata spostata nell'elementolifecycle-common
dilifecycle-runtime-ktx
. (Iabb91, b/240298691)
Versione 2.6.0-alpha05
25 gennaio 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
viene rilasciato. La versione 2.6.0-alpha05 contiene questi commit.
Conversioni di Kotlin
Transformations
è ora scritto in Kotlin. Si tratta di una modifica incompatibile con le fonti per le classi scritte in Kotlin che utilizzavano direttamente una sintassi comeTransformations.map
. Il codice Kotlin ora deve utilizzare la sintassi del metodo dell'estensione Kotlin, precedentemente disponibile solo quando si utilizzavalifecycle-livedata-ktx
. Quando si utilizza il linguaggio di programmazione Java, le versioni di questi metodi che utilizzano un metodoandroidx.arch.core.util.Function
vengono deprecate e sostituite con le versioni che utilizzano unFunction1
Kotlin. Questa modifica mantiene la compatibilità binaria. (I8e14f).ViewTreeViewModelStoreOwner
è ora scritto in Kotlin. Questa è una modifica incompatibile con l'origine per le classi scritte in Kotlin. Ora devi importare e utilizzare direttamente i metodi dell'estensione Kotlin suView
diandroidx.lifecycle.setViewTreeViewModelStoreOwner
eandroidx.lifecycle.findViewTreeViewModelStoreOwner
per impostare e trovare un proprietario impostato in precedenza. Questo è compatibile con il programma binario ed è comunque compatibile con la sorgente per implementazioni scritte nel linguaggio di programmazione Java. (Ia06d8, Ib22d8, b/240298691)- L'interfaccia di
HasDefaultViewModelProviderFactory
ora è scritta in Kotlin. Si tratta di una modifica incompatibile con l'origine per le classi scritte in Kotlin: ora devono sostituire le proprietàdefaultViewModelProviderFactory
edefaultViewModelCreationExtras
anziché implementare le funzioni corrispondenti precedenti. (Iaed9c, b/240298691). Observer
è ora scritto in Kotlin. Il 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 rilasciato. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
LiveData
ora include una nuova proprietàisInitialized
che indica se è stato impostato un valore esplicito nellaLiveData
, consentendoti di distinguere traliveData.value
che restituiscononull
perché non è mai stato impostato alcun valore o perché è stato impostato 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 poiché l'utilizzo di un supervisore in pausa può portare a sprechi di risorse in alcuni casi. È consigliabile utilizzareLifecycle.repeatOnLifecycle
. (Iafc54, b/248302832).
Conversioni di Kotlin
ViewTreeLifecycleOwner
è ora scritto in Kotlin. Questa è una modifica incompatibile con l'origine per le classi scritte in Kotlin. Ora devi importare e utilizzare direttamente i metodi dell'estensione Kotlin suView
diandroidx.lifecycle.setViewTreeLifecycleOwner
eandroidx.lifecycle.findViewTreeLifecycleOwner
per impostare e trovare un proprietario impostato in precedenza. Sostituisce la precedente estensione Kotlin inlifecycle-runtime-ktx
. Questo è compatibile con il programma binario ed è comunque compatibile con la sorgente per implementazioni scritte nel linguaggio di programmazione Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
è ora scritto in Kotlin. Le estensioni Kotlin, in precedenza, inlifecycle-reactivestreams-ktx
sono state spostate nel modulolifecycle-reactivestreams
e sono diventate la piattaforma 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 del metodo di estensione Kotlin. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
eViewModelStore
ora sono scritte in Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23b/6)
Correzioni di bug
SavedStateHandle
non ha più arresti anomali conClassCastException
quando chiamiget()
con il tipo di classe errato. (I6ae7c).
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
viene rilasciato. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Risolto il problema relativo ai vincoli tra i diversi moduli del ciclo di vita che non funzionavano come previsto. (I18d0d, b/249686765).
- Gli errori generati da
LifecycleRegistry.moveToState()
ora includono un messaggio di errore più utile che informa gli sviluppatori del componente che li causa. (Idf4b2, b/244910446).
Versione 2.6.0-alpha02
7 settembre 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
viene rilasciato. 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 assicurano che tutti gli artefatti del ciclo di vita interdipendenti utilizzino la stessa versione, eseguendo l'upgrade automatico delle altre dipendenze quando ne viene eseguito l'upgrade. b/242871265 FlowLiveData.asFlow()
ora crea uncallbackFlow
invece di utilizzare la propria implementazioneChannel
per garantire la sicurezza dei thread e la conservazione del contesto. (I4a8b2, b/200596935).- La funzione
asLiveData
diFlowLiveData
ora conserverà il valore iniziale diStateFlow
durante la creazione del nuovo oggettoLiveData
. (I3f530, b/157380488). - Da Ciclo di vita
2.5.1
: le implementazioni personalizzate diAndroidViewModelFactory
ora chiamano correttamente la funzionecreate(modelClass)
quando si utilizza il costruttore stateful conLifecycle
2.4 o versioni successive (I5b315, b/238011621)
Versione 2.6.0-alpha01
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
viene rilasciato. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova estensione su
StateFlow
eFlow
dicollectAsStateWithLifecycle
che raccoglie dai flussi e rappresenta il suo valore più recente come stato di scrittura 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 rientra almeno in un determinatoLifecycle.State
. Quando il ciclo di vita è inferiore a questo valoreLifecycle.State
, la raccolta dei flussi 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 rilasciato. La versione 2.5.1 contiene questi commit.
Correzioni di bug
- Le implementazioni personalizzate di
AndroidViewModelFactory
ora chiamano correttamente la funzionecreate(modelClass)
quando si utilizza il costruttore statefulAndroidViewModelFactory
conLifecycle
2.4 o versioni successive. (I5b315, b/238011621)
Versione 2.5.0
29 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0
viene rilasciato. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
SavedStateHandle
ora offre un'APIgetStateFlow()
che restituisce un KotlinStateFlow
per il monitoraggio delle modifiche ai valori in alternativa all'utilizzo diLiveData
.ViewModel CreationExtras: quando scrivi un
ViewModelProvider.Factory
personalizzato, non è più necessario estendereAndroidViewModelFactory
oAbstractSavedStateViewModelFactory
per ottenere rispettivamente l'accesso aApplication
oSavedStateHandle
. Questi campi vengono invece forniti a ogni sottoclasseViewModelProvider.Factory
comeCreationExtras
tramite il nuovo sovraccarico dicreate
:create(Class<T>, CreationExtras)
. Questi extra vengono forniti automaticamente dalla tua Attività o Frammento quando utilizzi rispettivamente l'Attività1.5.0
e il Frammento1.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 un Kotlin DSLviewModelFactory
che ti consente di definireViewModelProvider.Factory
in termini di uno o più inizializzatori lambda, uno per ogni specifica classeViewModel
supportata dal tuo produttore personalizzato, 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 utilizza una fabbrica lambda per creare 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 del Risparmio di ComposeState: l'elemento
lifecycle-viewmodel-compose
contiene ora nuove API sperimentali inSavedStateHandle.saveable
che consentono arememberSaveable
un comportamento simile supportato dalSavedStateHandle
di un "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 stati aggiunti un'API
addCloseable()
e un nuovo sovraccarico del costruttore che ti consente di aggiungere uno o più oggettiCloseable
alViewModel
, che verrà chiuso quandoViewModel
verrà cancellato senza richiedere alcuna operazione manuale inonCleared()
.Ad esempio, per creare un ambito a coroutine che puoi inserire in un ViewModel, ma controllarlo tramite test, puoi creare un
CoroutineScope
che implementiCloseable
:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
che può essere utilizzata 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 del comportamento
- Ora i tentativi di spostare
Lifecycle.State
daINITIALIZED
aDESTROYED
generano sempre unIllegalStateException
indipendentemente dal fatto cheLifecycle
abbia o meno associato un osservatore. LifecycleRegistry
ora cancellerà i propri osservatori quando raggiungerà lo statoDESTROYED
.
Versione 2.5.0-rc02
15 giugno 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
viene rilasciato. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
ViewModelProvider
non si arresta 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 rilasciato. La versione 2.5.0-rc01 contiene questi commit.
Correzioni di bug
MediatorLiveData.addSource()
ora genera un comandoNullPointerException
quando viene passata una sorgentenull
anziché propagare la sorgentenull
agli osservatori.(Ibd0fb, b/123085232)
Versione 2.5.0-beta01
20 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
viene rilasciato. La versione 2.5.0-beta01 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti i delegati della proprietà
SavedStateHandle.saveable
per utilizzare i nomi delle proprietà come chiavi per mantenere lo stato inSavedStateHandle
(I8bb86, b/225014345)
Correzioni di bug
- Risolto il problema per cui nidificare un
NavHost
all'interno di un altroNavHost
in una scheda di navigazione inferiore non principale comportava una richiestaIllegalStateException
quando si utilizzano più stack posteriori. (I11bd5, b/228865698).
Versione 2.5.0-alpha06
6 aprile 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
viene rilasciato. La versione 2.5.0-alpha06 contiene questi commit.
Nuove funzionalità
- Aggiungi l'overload
MutableState
sperimentale aSavedStateHandle.saveable
per la parità conrememberSaveable
(I38cfe, b/224565154)
Modifiche alle API
CreationExtras
ora è astratto e non sigillato. (Ib8a7a).
Correzioni di bug
- Risolto un errore di
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 rilasciato. 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
- Risolto un problema di compatibilità con le versioni di Ciclo di vita 2.3 e versioni successive in Java. (I52c8a, b/219545060).
Correzioni di bug
SavedStateViewFactory
ora supporta l'uso diCreationExtras
anche quando è 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 rilasciato. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche alle API
SavedStateHandle
ora offre un'APIgetStateFlow()
che restituisce un KotlinStateFlow
per monitorare le modifiche ai valori in alternativa all'utilizzo diLiveData
. (Iad3ab, b/178037961).
Versione 2.5.0-alpha03
23 febbraio 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
viene rilasciato. La versione 2.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti un'API
addCloseable()
e un nuovo sovraccarico del costruttore che ti consente di aggiungere uno o più oggettiCloseable
alViewModel
, che verrà chiuso quando la proprietàViewModel
verrà cancellata senza richiedere alcun lavoro manuale inonCleared()
. (I55ea0) lifecycle-viewmodel
ora fornisce un elementoInitializerViewModelFactory
che ti consente di aggiungere lambda per gestire determinate classiViewModel
, utilizzandoCreationExtras
come origine dati principale. (If58fc, b/216687549)lifecycle-viewmodel-compose
ora offre un'APIviewModel()
che utilizza una fabbrica 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 del comportamento
- Ora i tentativi di spostare
Lifecycle.State
daINITIALIZED
aDESTROYED
generano sempre unIllegalStateException
indipendentemente dal fatto cheLifecycle
abbia o meno associato un osservatore. (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 rilasciato. La versione 2.5.0-alpha02 contiene questi commit.
Modifiche alle API
SavedStateHandle
eSavedStateViewModelFactory
sono stati convertiti in Kotlin. In questo modo è migliorata la nullabilità delle informazioni generiche in entrambe le classi. (Ib6ce2, b/216168263, I9647a, b/177667711)- Ora il parametro della funzione
switchMap
LiveData
può avere un output con valore null. (I40396, b/132923666) - Le estensioni
LiveData
-ktx ora sono annotate con@CheckResult
per garantire che il risultato venga utilizzato quando si chiamano queste funzioni. (Ia0f05, b/207325134).
Modifiche del comportamento
SavedStateHandle
ora archivia correttamente il valore defaultValue quando non esiste alcun valore per la chiave specificata. (I1c6ce, b/178510877).
Correzioni di bug
- Da Ciclo di vita
2.4.1
: aggiornamento dilifecycle-process
in base all'Avvio 1.1.1 per garantire che le correzioni che impediscono aProcessLifecycleInitializer
di generare unStartupException
siano disponibili per impostazione predefinita. (Ib01df, b/216490724). - Quando le classi
AndroidViewModel
personalizzate hanno parametri nell'ordine sbagliato e tentano di creare unViewModel
, ora viene visualizzato un messaggio di errore migliorato. (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 rilasciato. La versione 2.5.0-alpha01 contiene questi commit.
Elementi aggiuntivi Creazione ViewModel
Con questa versione stiamo gettando le basi per ristrutturare la struttura di ViewModel
. Anziché un insieme rigido di sottoclassi di ViewModelProvider.Factory
che aggiungono ciascuna funzionalità aggiuntiva (consentendo un parametro del costruttore Application
tramite AndroidViewModelFactory
, consentendo un parametro del costruttore SavedStateHandle
tramite SavedStateViewModelFactory
e AbstractSavedStateViewModelFactory
e così via), ci stiamo spostando in 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 precedente metodo create(Class<T>)
di ViewModelProvider.Factory
. Invece, chiama in un nuovo sovraccarico di create
: create(Class<T>, CreationExtras)
. Ciò significa che qualsiasi implementazione diretta dell'istanza ViewModelProvider.Factory
ha ora accesso a ciascuno di questi nuovi CreationExtras
:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: questoString
fornisce l'accesso alla chiave personalizzata che hai trasmesso aViewModelProvider.get()
.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
fornisce l'accesso al corsoApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
fornisce l'accesso all'elementoSavedStateRegistryOwner
utilizzato per creare questo ViewModel.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
fornisce l'accesso all'elementoViewModelStoreOwner
utilizzato per creare questo ViewModel.SavedStateHandleSupport.DEFAULT_ARGS_KEY
fornisce l'accesso alBundle
di argomenti che devono essere usati per creare unSavedStateHandle
.
Questi extra sono 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 una ViewModelProvider.Factory
che trasmette a ogni ViewModel
solo le informazioni di cui hai bisogno senza fare affidamento su una rigida gerarchia di sottoclassi Fabbrica:
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 l'elemento ViewModel che ne ha bisogno. (Ia6654, b/188541057)
Il campo CreationExtras
personalizzato può essere fornito eseguendo l'override di getDefaultViewModelCreationExtras()
in ComponentActivity
o Fragment
, rendendolo così disponibile per la tua ViewModelProvider.Factory
personalizzata sotto forma di inserimento assistito. Questi extra verranno messi automaticamente a disposizione del tuo produttore personalizzato quando vengono utilizzati direttamente con ViewModelProvider
o quando utilizzi le estensioni di proprietà Kotlin by viewModels()
e by activityViewModels()
. (I79f2b, b/207012584, b/207012585, b/207012490).
Correzioni di bug
- Risolto il problema per cui il valore predefinito fornito a un
SavedStateHandle
appariva di nuovo dopo la morte e la ricreazione del processo, anche se era stato specificamente rimosso daSavedStateHandle
. Di conseguenza,SavedStateHandle
non unisce più i valori predefiniti e quelli ripristinati, ma utilizza solo i valori ripristinati come fonte di riferimento. (I53a4b)
Versione 2.4
Versione 2.4.1
9 febbraio 2022
androidx.lifecycle:lifecycle-*:2.4.1
viene rilasciato. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Eseguito il backporting da Ciclo di vita
2.5.0-alpha01
: è stato risolto un problema per cui il valore predefinito fornito a unSavedStateHandle
veniva visualizzato di nuovo dopo la morte e la ricreazione del processo, anche se era stato specificamente rimosso daSavedStateHandle
. Di conseguenza,SavedStateHandle
non unisce più i valori predefiniti e quelli ripristinati, ma utilizza solo i valori ripristinati come fonte di riferimento. (I53a4b) lifecycle-process
ora dipende da Androidx Startup 1.1.1, che ha corretto una regressione in cui l'utilizzo diProcessLifecycleInitializer
causerebbeStartupException
. (b/216490724)
Versione 2.4.0
27 ottobre 2021
androidx.lifecycle:lifecycle-*:2.4.0
viene rilasciato. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
@OnLifecycleEvent
è stato deprecato. Usa inveceLifecycleEventObserver
oDefaultLifecycleObserver
.androidx.lifecycle:lifecycle-viewmodel-compose
raccolta aggiunta. FornisceviewModel()
componibile eLocalViewModelStoreOwner
.- Modifica originale:
ViewModelProvider
è stato riscritto in Kotlin. Il metodoViewModelProvider.Factory.create
non consente più valori generici con valori null.
- Modifica originale:
- Una nuova API coroutines è stata aggiunta a
androidx.lifecycle:lifecycle-runtime-ktx
: Lifecycle.repeatOnLifecycle
, API che esegue un blocco di codice in una coroutine quando il ciclo di vita è almeno in un determinato stato. Il blocco verrà annullato e riavviato quando il ciclo di vita si sposta all'interno e all'esterno dello stato di destinazione;Flow.flowWithLifecycle
, API che emette valori dal flusso upstream quando il ciclo di vita è almeno in un determinato stato.DefaultLifecycleObserver
è stato spostato dalifecycle.lifecycle-common-java8
alifecycle.lifecycle-common
.lifecycle.lifecycle-common-java8
non fornisce più funzionalità aggiuntive oltre alifecycle.lifecycle-common
, quindi la dipendenza può essere sostituita dalifecycle.lifecycle-common
.- L'API non coroutines 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 effettuare le seguenti operazioni:<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 al ciclo di vita 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 rilasciato. La versione 2.4.0-beta01 contiene questi commit.
Modifiche alle API
@OnLifecycleEvent
è stato deprecato. UsaLifecycleEventObserver
oDefaultLifecycleObserver
. (I5a8fa)- defaultLifecycleObservationr è stato spostato da
androidx.lifecycle.lifecycle-common-java8
aandroidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
non fornisce più funzionalità aggiuntive oltre aandroidx.lifecycle.lifecycle-common
, quindi la dipendenza può essere sostituita daandroidx.lifecycle.lifecycle-common
. (I021aa) - L'API Non coroutines da
lifecycle-viewmodel-ktx
è stata spostata nel modulolifecycle-viewmodel
. (I6d5b2).
Contributi esterni
Versione 2.4.0-alpha03
4 agosto 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
viene rilasciato. La versione 2.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Modifica che provoca un errore di origine: il provider ViewModelProvider è stato riscritto in Kotlin.
Il metodo
ViewModelProvider.Factory.create
non consente più valori generici con valori null. (I9b9f6)
Modifiche del comportamento
- Ora l'elemento
Lifecycle.repeatOnLifecycle
:block
viene sempre richiamato in modo seriale durante la ripetizione dell'esecuzione. (Ibab33)
Contributi esterni
- 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 rilasciato. 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
è stata rimossa a favore diLifecycle.repeatOnLifecycle
che rispetta la contemporaneità strutturata e semplifica il ragionamento. (I4a3a8). - Rendi
ProcessLifecycleInitializer
pubblico in modo che altriandroidx.startup.Initializer
possano usarle come dipendenze. (I94c31)
Correzioni di bug
- Risolto il problema relativo al controllo lint
NullSafeMutableLiveData
quando il campo contiene modificatori. (#147, b/183696616) - È stato risolto un altro problema relativo al controllo lint
NullSafeMutableLiveData
quando si utilizzano valori generici. (n. 161, b/184830263)
Contributi esterni
- Grazie a maxsav per aver migliorato il controllo lint
NullSafeMutableLiveData
. (#147, b/183696616) - Grazie kozaxinan per aver migliorato il controllo lint
NullSafeMutableLiveData
. (n. 161, b/184830263)
Versione 2.4.0-alpha01
24 marzo 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
viene rilasciato. La versione 2.4.0-alpha01 contiene questi commit.
Modifiche del 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 effettuare le seguenti operazioni:<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 è almeno in un determinato stato utilizzando l'APILifecycle.repeatOnLifecycle
. Si tratta di un'alternativa alla nuova APILifecycleOwner.addRepeatinJob
. (I0f4cd)
Correzioni di bug
- A partire dal ciclo di vita 2.3.1: ora la regola lint
NonNullableMutableLiveData
può differenziare correttamente le variabili di campo con valori di valori null diversi. (b/169249668)
Lifecycle Viewmodel Compose versione 1.0.0
Versione 1.0.0-alpha07
16 giugno 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
viene rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Interruzione delle modifiche all'API
viewModel()
ora richiede unViewModelStoreOwner
facoltativo, semplificando la collaborazione con proprietari diversi daLocalViewModelStoreOwner
. Ad esempio, ora puoi utilizzareviewModel(navBackStackEntry)
per recuperare un ViewModel associato a un determinato grafico di navigazione. (I2628d, b/188693123).
Versione 1.0.0-alpha06
2 giugno 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Aggiornato in modo che sia compatibile con la versione 1.0.0-beta08
di Compose.
Versione 1.0.0-alpha05
18 maggio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
- Aggiornato in modo che sia compatibile con la versione
1.0.0-beta07
di Compose.
Correzioni di bug
- I file AndroidManifest di ui-test-manifest e ui-tooling-data sono ora 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 rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche delle 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 rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.current
ora restituisce un valoreViewModelStoreOwner
nullo per determinare meglio se un elementoViewModelStoreOwner
è disponibile nella composizione attuale. Le API che richiedono unViewModelStoreOwner
, comeviewModel()
eNavHost
, generano comunque un'eccezione se non viene impostato unViewModelStoreOwner
. (Idf39a)
Lifecycle-Viewmodel-Compose versione 1.0.0-alpha02
24 febbraio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- Ora
LocalViewModelStoreOwner
ha una funzioneprovides
che può essere utilizzata conCompositionLocalProvider
, che sostituisce l'APIasProvidableCompositionLocal()
. (I45d24).
Lifecycle-Viewmodel-Compose versione 1.0.0-alpha01
10 febbraio 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
- L'elemento componibile
viewModel()
eLocalViewModelStoreOwner
sono stati spostati daandroidx.compose.ui.viewinterop
a questo artefatto nel pacchettoandroidx.lifecycle.viewmodel.compose
. (I7a374)
Versione 2.3.1
Ciclo di vita Versione 2.3.1
24 marzo 2021
androidx.lifecycle:lifecycle-*:2.3.1
viene rilasciato. La versione 2.3.1 contiene questi commit.
Correzioni di bug
- La regola lint
NonNullableMutableLiveData
ora può differenziare correttamente le variabili di campo con valori di valori null diversi. (b/169249668)
Versione 2.3.0
Versione 2.3.0
10 febbraio 2021
androidx.lifecycle:lifecycle-*:2.3.0
viene rilasciato. La versione 2.3.0 contiene questi commit.
Importanti modifiche dalla versione 2.2.0
- Supporto di
SavedStateHandle
per le classi non comparabili:SavedStateHandle
ora supporta la serializzazione lazy consentendo di chiamaresetSavedStateProvider()
per una determinata chiave, fornendo unSavedStateProvider
che riceverà un callback asaveState()
quando viene chiesto aSavedStateHandle
di salvare il proprio stato. Vedi Salvataggio dei corsi non componibili. - Applicazione del comportamento del ciclo di vita:
- LifecycleRegistry ora applica
DESTROYED
come stato di terminale. LifecycleRegistry
ora verifica che i suoi metodi siano chiamati sul thread principale. È sempre stato un requisito per i cicli di vita delle attività, dei frammenti e così via. L'aggiunta di osservatori dai thread non principali ha reso difficile rilevare gli arresti anomali durante il runtime. Per gli oggettiLifecycleRegistry
di proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzandoLifecycleRegistry.createUnsafe(...)
, ma poi devi assicurarti che venga eseguita una sincronizzazione corretta quando si accede a questoLifecycleRegistry
da diversi thread.
- LifecycleRegistry ora applica
- Aiutanti 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
in base aState
e direzione di transizione. È stato aggiunto il metodogetTargetState()
che fornisce il valoreState
a cui passerà il ciclo di vita direttamente dopoEvent
. withStateAtLeast
: sono state aggiunte le APILifecycle.withStateAtLeast
che attendono uno stato del ciclo di vita ed eseguono un blocco di codice non in sospensione in modo sincrono nel momento in cui si cambia lo stato, quindi riprendi con il risultato. Queste API sono diverse dai metodiwhen*
esistenti in quanto non consentono l'esecuzione del codice di sospensione e non utilizzano un supervisore personalizzato. (aosp/1326081).- API
ViewTree
: una nuova APIViewTreeLifecycleOwner.get(View)
eViewTreeViewModelStoreOwner.get(View)
ti consente di recuperare rispettivamente leLifecycleOwner
eViewModelStoreOwner
contenentiLifecycleOwner
eViewModelStoreOwner
in base a un'istanzaView
. Per compilare correttamente questo campo devi eseguire l'upgrade ad Attività1.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 deprecata 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 rilasciato. 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)
Contributi esterni
- 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 rilasciato. La versione 2.3.0-beta01 contiene questi commit.
Modifiche alle API
- L'estensione Kotlin
LiveData.observe()
necessaria per utilizzare la sintassi lambda è ora deprecata in quanto non è necessaria quando si utilizza Kotlin 1.4. (I40d3f)
Correzioni di bug
- Esegui l'upgrade di Androidx per utilizzare Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Modifiche alla documentazione
- Lo strumento per la creazione di
liveData
e i documenti diasLiveData()
sono stati aggiornati per includere 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 rilasciato. La versione 2.3.0-alpha07 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di arresto anomalo nel controllo Lint
NullSafeMutableLiveData
. (aosp/1395367)
Versione 2.3.0-alpha06
22 luglio 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
viene rilasciato. 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 generare il valoreEvent
in base aState
e direzione di transizione. È stato aggiunto il metodogetTargetState()
che fornisce il valoreState
a cui passerà il ciclo di vita direttamente dopoEvent
. (I00887) - Sono state aggiunte le API
Lifecycle.withStateAtLeast
che attendono uno stato del ciclo di vita ed eseguono un blocco di codice non in pausa in modo sincrono nel momento in cui cambia lo stato, per poi riprendere con il risultato. Queste API sono diverse dai metodiwhen*
esistenti in quanto non consentono l'esecuzione del codice di sospensione e non utilizzano un supervisore personalizzato. (aosp/1326081).
Modifiche del comportamento
- LifecycleRegistry ora applica
DESTROYED
come stato di terminale. (I00887) LifecycleRegistry
ora verifica che i suoi metodi siano chiamati sul thread principale. È sempre stato un requisito per i cicli di vita delle attività, dei frammenti e così via. L'aggiunta di osservatori dai thread non principali ha reso difficile rilevare gli arresti anomali durante il runtime. Per gli oggettiLifecycleRegistry
di proprietà dei tuoi componenti, puoi disattivare esplicitamente i controlli utilizzandoLifecycleRegistry.createUnsafe(...)
, ma poi devi assicurarti che venga eseguita una sincronizzazione corretta quando si accede a questoLifecycleRegistry
da diversi thread (Ie7280, b/137392809)
Correzioni di bug
- Risolto il problema di arresto anomalo in
NullSafeMutableLiveData
. (b/159987480) - È stato corretto un
ObsoleteLintCustomCheck
per i controlli Lint in bundle conlifecycle-livedata-core-ktx
(e nello specificoNullSafeMutableLiveData
). (b/158699265)
Versione 2.3.0-alpha05
24 giugno 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
viene rilasciato. 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 il problema per cui i controlli lint non venivano eseguiti durante l'utilizzo di 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 rilasciato. La versione 2.3.0-alpha04 contiene questi commit.
Correzioni di bug
- È stato risolto un arresto anomalo nel controllo lint
NonNullableMutableLiveData
. (b/157294666) - Il controllo lint
NonNullableMutableLiveData
ora copre un numero notevolmente maggiore di casi in cui un valorenull
è stato impostato suMutableLiveData
con un parametro di tipo non null. (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 lazy permettendoti di chiamaresetSavedStateProvider()
per una determinata chiave, fornendo unSavedStateProvider
che riceverà un callback asaveState()
quando viene chiesto all'SavedStateHandle
di salvare il proprio stato. (b/155106862)- Una nuova API
ViewTreeViewModelStoreOwner.get(View)
consente di recuperare l'elementoViewModelStoreOwner
contenitore in un'istanzaView
. Devi eseguire l'upgrade ad Attività1.2.0-alpha05
, Frammento1.3.0-alpha05
e AppCompat1.3.0-alpha01
affinché venga compilato correttamente. Un'estensione KotlinfindViewModelStoreOwner()
è stata aggiunta alifecycle-viewmodel-ktx
. (aosp/1295522)
Correzioni di bug
- Risolto un problema che causava la pubblicazione dei controlli Lint
MutableLiveData
rilasciati nel ciclo di vita2.3.0-alpha01
insieme all'elementolifecycle-livedata-core-ktx
. (b/155323109)
Versione 2.3.0-alpha02
29 aprile 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
viene rilasciato. La versione 2.3.0-alpha02 contiene questi commit.
Modifiche alle API
SavedStateViewModelFactory
ora ti consente di passare un valoreApplication
null al suo costruttore per supportare meglio i casi di assistenza in cui non è immediatamente disponibile e non è necessario il supporto perAndroidViewModel
. (aosp/1285740)
Correzioni di bug
- Sono state migliorate le prestazioni dell'avvio a freddo evitando errori 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 rilasciato. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Una nuova API
ViewTreeLifecycleOwner.get(View)
consente di recuperare l'elementoLifecycleOwner
contenitore in un'istanzaView
. Devi eseguire l'upgrade all'Attività1.2.0-alpha01
e al Frammento1.3.0-alpha01
per compilarlo correttamente. 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
che in Kotlin è stato definito come non null. Questa opzione è disponibile quando si utilizzano 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 sicuro per i thread. (aosp/1242438).
Correzioni di bug
- L'artefatto
lifecycle-runtime
ora ha un nome pacchetto univoco. (aosp/1187196)
Versione 2.2.0
ViewModel-Savedstate Versione 2.2.0
5 febbraio 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
viene rilasciato. La versione 2.2.0 contiene questi commit.
Il modello SaveModel del ciclo di vita ha ora 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 rilasciato. La versione 2.2.0 contiene questi commit.
Modifiche importanti dalla versione 2.1.0
- Integrazione delle coroutine nel ciclo di vita: il nuovo artefatto
lifecycle-runtime-ktx
aggiunge l'integrazione tra Lifecycle e coroutine Kotlin. Anchelifecycle-livedata-ktx
è stato ampliato per sfruttare le coroutine. Per ulteriori dettagli, consulta Utilizzare le coroutine Kotlin con componenti di architettura. - Ritiro di
ViewModelProviders.of()
: il servizioViewModelProviders.of()
è stato ritirato. Puoi passareFragment
oFragmentActivity
al nuovo costruttoreViewModelProvider(ViewModelStoreOwner)
per ottenere la stessa funzionalità quando utilizzi il Frammento1.2.0
. - Ritiro dell'elemento
lifecycle-extensions
: con il precedente ritiro diViewModelProviders.of()
, questa release segna il ritiro dell'ultima API inlifecycle-extensions
e questo elemento dovrebbe ora essere considerato deprecato nella sua interezza. Lo consigliamo vivamente a seconda degli elementi specifici del ciclo di vita necessari (ad esempiolifecycle-service
se utilizziLifecycleService
elifecycle-process
se utilizziProcessLifecycleOwner
) anzichélifecycle-extensions
, poiché non ci sarà una versione futura di2.3.0
dilifecycle-extensions
. - Processore di annotazioni incrementali graduale: il processore di annotazioni del ciclo di vita è 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 rilasciato. La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- Risolto l'errore che si verificava quando un
ViewModel
fittizio veniva archiviato inViewModelStore
ed eseguito in un secondo momento una query con il valore di fabbrica predefinito. - Correggi un utilizzo di
Dispatchers.Main.immediate
inlaunchWhenCreated
e in 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 risoluzione del problema. (aosp/1156203).
- Grazie a Vsevolod Tolstopyatov di Jetbrains per aver esaminato un'implementazione dell'esecuzione integrata.
Modifiche delle dipendenze
- Le estensioni del ciclo di vita ora dipendono dal frammento
1.2.0-rc03
.
Versione 2.2.0-rc02
7 novembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
viene rilasciato. La versione 2.2.0-rc02 contiene questi commit.
Correzioni di bug
- Risolto un bug nella configurazione ProGuard della libreria che interessava i dispositivi che eseguono l'API 28+ se l'API target è inferiore a 29. (b/142778206)
Versione 2.2.0-rc01
23 ottobre 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
viene rilasciato. La versione 2.2.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
launchWhenCreated
e i metodi correlati venivano eseguiti un frame dopo il metodo di ciclo di vita associato a causa dell'utilizzo diDispatchers.Main
anzichéDispatchers.Main.immediate
. (aosp/1145596)
Contributi esterni
- Ringraziamo Nicklas Ansman per aver contribuito alla risoluzione del problema. (aosp/1145596)
Versione 2.2.0-beta01
9 ottobre 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
viene rilasciato. La versione 2.2.0-beta01 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione introdotta in Ciclo di vita 2.2.0-alpha05 nell'ordine di
ProcessLifecycleOwner
e il valoreLifecycleOwner
dell'attività veniva avviato e ripreso sui dispositivi Android 10. (aosp/1128132). - È stata corretta una regressione introdotta in Ciclo di vita
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 rilasciato. La versione 2.2.0-alpha05 contiene questi commit.
Correzioni di bug
- È stata corretta una condizione di gara nel generatore di dati live coroutine. b/140249349
Versione 2.2.0-alpha04
5 settembre 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
viene rilasciato. 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
- Ringraziamo 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 rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Le implementazioni di
ViewModelStoreOwner
possono ora implementareHasDefaultViewModelProviderFactory
per fornire un valoreViewModelProvider.Factory
predefinito. Questa operazione è stata eseguita per l'Attività1.1.0-alpha02
, il Frammento1.2.0-alpha02
e la Navigazione2.2.0-alpha01
. (aosp/1092370, b/135716331)
Modifiche alle API
- L'API
ViewModelProviders.of()
è stata ritirata. Puoi passareFragment
oFragmentActivity
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 rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- È stato sostituito
LiveDataScope.initialValue
conLiveDataScope.latestValue
, che monitorerà l'attuale valore emesso del bloccoliveData
. - È stato aggiunto un nuovo sovraccarico al generatore
liveData
che riceve il parametrotimeout
di tipoDuration
Versione 2.2.0-alpha01
7 maggio 2019
androidx.lifecycle:*:2.2.0-alpha01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- In questa release sono state aggiunte nuove funzionalità che aggiungono il supporto delle 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 rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità importanti nella versione 1.0.0
- È stata aggiunta la nuova classe SavedStateHandle. Consente ai tuoi corsi
ViewModel
di accedere e contribuire allo stato salvato. Questo oggetto può essere ricevuto nel costruttore della classeViewModel
e nelle fabbriche fornite per impostazione predefinita da Fragments e AppCompatActivity inseriràSavedStateHandle
automaticamente. - AbstractSavedStateViewModelIndustry è stato aggiunto. In questo modo puoi creare fabbriche personalizzate per il tuo
ViewModel
e 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 rilasciato. La versione 1.0.0-rc03 contiene questi commit.
Modifiche delle dipendenze
- Il valore ViewModel SaveState del ciclo di vita ora dipende dal ciclo di vita
2.2.0-rc03
.
Viewmodel-Savedstate Versione 1.0.0-rc02
7 novembre 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
viene rilasciato. La versione 1.0.0-rc02 contiene questi commit.
Modifiche delle 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 da 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 rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui se si accedeva per la prima volta a un SaveState ViewModel in
Activity.onActivityResult()
, si verificava un erroreIllegalStateException
. (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 rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
SavedStateViewModelFactory
non estende piùAbstractSavedStateViewModelFactory
eSavedStateHandle
viene creato solo per i ViewModels che lo hanno richiesto (aosp/1113593)
ViewModel-WalletState versione 1.0.0-alpha03
7 agosto 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche che provocano un errore
lifecycle-viewmodel-savedstate
non dipende più dafragment
e i relativi costruttoriSavedStateViewModelFactory(Fragment)
eSavedStateViewModelFactory(FragmentActivity)
sono stati rimossi. Al suo posto,SavedStateViewModelFactory
è ora il valore predefinito per l'Attività1.1.0-alpha02
, il Frammento1.2.0-alpha02
e la Navigazione2.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 rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- È stato aggiunto un sovraccarico di
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 rilasciato. Il log di commit completo per questa release iniziale è disponibile qui.
Nuove funzionalità
- Ora
ViewModels
può contribuire allo stato salvato. A tale scopo, utilizza il nuovo modello di fabbricaSavedStateVMFactory
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 uno stream di eventi del ciclo di vita. È un'API pubblica anziché una classeGenericLifecycleObserver
nascosta. - Estensioni ktx aggiunte per metodi
LiveData.observe
e metodiTransformations.*
. - È stato aggiunto
Transformations.distinctUntilChanged
, in modo da creare un nuovo oggetto LiveData che non emette un valore fino a quando il valoreLiveData
di origine non viene modificato. - Aggiunto il supporto della coroutine in ViewModels aggiungendo la proprietà dell'estensione
ViewModel.viewModelScope
.
Versione 2.1.0
5 settembre 2019
androidx.lifecycle:lifecycle-*:2.1.0
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Versione 2.1.0-rc01
2 luglio 2019
androidx.lifecycle:*:2.1.0-rc01
viene rilasciato senza modifiche da 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 rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- I cicli di vita sono passati alla versione beta: le API introdotte nelle versioni alpha precedenti, come le funzioni di estensione di
liveData
per trasformazioni e osservazioni, l'inizializzazione diViewModel
con delega di proprietà e altre ancora, sono stabilizzate e non cambieranno.
Versione 2.1.0-alpha04
3 aprile 2019
androidx.lifecycle:*:2.1.0-alpha04
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- Modifica di interruzione: l'API sottostante dietro
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 rilasciato. L'elenco completo dei commit inclusi in questa versione è disponibile qui.
Modifiche alle API
- Il campo
ViewModelProvider.KeyedFactory
è stato rimosso. La seconda interfaccia, oltre aViewModelProvider.Factory
, non ha composto bene le nuove funzionalità come la delega delle proprietà in Kotlinby viewmodels {}
. (aosp/914133)
Versione 2.1.0-alpha02
30 gennaio 2019
androidx.lifecycle 2.1.0-alpha02
viene rilasciato.
Modifiche alle API
LifecycleRegistry
contiene ora un metodosetCurrentState()
che sostituisce il metodosetState()
, ora deprecato. (aosp/880715)
Correzioni di bug
- Risolto il problema per cui le istanze
ViewModel
fittizie si arrestavano in modo anomalo quando l'elementoViewModelStore
contenitore veniva cancellato. b/122273087
Versione 2.1.0-alpha01
17 dicembre 2018
androidx.lifecycle 2.1.0-alpha01
viene rilasciato.
Nuove funzionalità
- È stato aggiunto
LifecycleEventObserver
per i casi in cui è necessario uno stream di eventi del ciclo di vita. È un'API pubblica anziché una classeGenericLifecycleObserver
nascosta. - Estensioni ktx aggiunte per metodi
LiveData.observe
e metodiTransformations.*
. - Il metodo
Transformations.distinctUntilChanged
è stato aggiunto. Crea un nuovo oggettoLiveData
che non emette un valore finché il valore LiveData di origine non viene modificato. - Il supporto delle coroutine in ViewModels: la proprietà dell'estensione
ViewModel.viewModelScope
è stato aggiunto. - È stato aggiunto
ViewModelProvider.KeyedFactory
, un valore di fabbrica per ViewModels che ricevekey
eClass
in metodocreate
.
Versione 2.0.0
Versione 2.0.0
21 settembre 2018
Il ciclo di vita 2.0.0
è stato rilasciato con una correzione di bug di 2.0.0-rc01
in ViewModel.
Correzioni di bug
- È stata corretta una regola ProGuard ViewModel che ha erroneamente rimosso i costruttori b/112230489
Versione 2.0.0-beta01
2 luglio 2018
Correzioni di bug
- Correzione della regola Proguard LifecycleObservationr per mantenere solo le implementazioni, non le sottointerfacce b/71389427
- Sono state corrette le regole di ProGuard di ViewModel per consentire l'offuscamento e la riduzione
Versioni pre-AndroidX
Per le versioni precedenti ad AndroidX di ciclo di vita 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
viene spostata da arch:runtime
a arch:common
. In questo modo può essere utilizzato senza la dipendenza di runtime, ad esempio in paging:common
di seguito.
lifecycle:common
è una dipendenza di lifecycle:runtime
, quindi questa modifica non interessa direttamente lifecycle:runtime
, ma solo i moduli che dipendono direttamente da lifecycle:common
, come fa l'opzione Paging.
Versione 1.1.0
22 gennaio 2018
Modifiche agli imballaggi
Ora sono disponibili nuove dipendenze molto più piccole:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- Le proprietà
LifecycleActivity
eLifecycleFragment
deprecate sono state rimosse. UtilizzaFragmentActivity
,AppCompatActivity
o l'assistenzaFragment
. @NonNull
annotazioni sono state aggiunte aViewModelProviders
eViewModelStores
- Il costruttore
ViewModelProviders
è stato deprecato. Usa direttamente i suoi metodi statici - L'API
ViewModelProviders.DefaultFactory
è stata ritirata. UtilizzaViewModelProvider.AndroidViewModelFactory
- È stato aggiunto il metodo
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
statico per recuperare unaFactory
statica adatta alla creazione di istanzeViewModel
eAndroidViewModel
.