Cycle de vie
Ce tableau liste tous les artefacts du groupe androidx.lifecycle.
| Artefact | Version stable | Version finale | Version bêta | Version alpha |
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
Déclarer des dépendances
Pour ajouter une dépendance sur Lifecycle, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 2.10
Version 2.10.0-beta01
22 octobre 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-beta01. La version 2.10.0-beta01 contient ces commits.
Modifications apportées à l'API
ViewModelStoreNavEntryDecoratorDefaulta été renomméViewModelStoreNavEntryDecoratorDefaults. (I6d27b, b/444447434)
Correction de bugs
rememberLifecycleOwnerne plante plus si le propriétaire reçoit un événementLifecycle.Event.ON_DESTROYavant de passer àLifeycle.State.CREATED. (I6f98e, b/444594991)
Version 2.10.0-alpha05
8 octobre 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-alpha05. La version 2.10.0-alpha05 contient ces commits.
Modifications apportées à l'API
removeViewModelStoreOnPopCallback()fait désormais partie d'un objetViewModelStoreNavEntryDecoratorDefault, qui est l'endroit où d'autres plates-formes et implémentations peuvent appeler la valeur par défaut. (Ia1f23, b/444447434)ViewModelStoreNavEntryDecoratora été refactorisé d'une fonction à une classe pour mieux refléter sa fonctionnalité en tant que fabrique pourNavEntryDecorator. Le paramètreshouldRemoveViewModelStoredu décorateur a été renomméremoveViewModelStoreOnPoppour préciser que ce rappel n'est invoqué que lorsqu'une entrée est supprimée debackStack. (Iefdc5, b/444447434)
Version 2.10.0-alpha04
24 septembre 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-alpha04. La version 2.10.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Refactorisez le composable
LifecycleOwnerenrememberLifecycleOwner. La fonction renvoie désormais directement leLifecycleOwner. Pour fournir ce propriétaire à une sous-composition, utilisezCompositionLocalProvider. (Ic57f0, b/444446629) - Ajoutez des stubs KMP à lifecycle-viewmodel-navigation3 pour permettre à JetBrains de fournir des forks qui remplissent ces cibles et prennent ainsi en charge CMP. (I44a4c)
Version 2.10.0-alpha03
27 août 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-alpha03. La version 2.10.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Mettez à jour Compose vers la version 1.9.0. (I2b9de)
Version 2.10.0-alpha02
13 août 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-alpha02. La version 2.10.0-alpha02 contient ces commits.
Nouvelles fonctionnalités
Le composable
LifecycleOwnerpeut désormais créer un cycle de vie racine autonome. En définissant (explicitement)parent = null, le nouveau cycle de vie fonctionne indépendamment de tout hôte (commeActivity,FragmentouNavBackStackEntry). Il démarre dès que le composable entre dans la composition et est automatiquement détruit lorsqu'il en sort. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Modifications apportées à l'API
- Dans le composable
LifecycleOwner, le paramètreparentLifecycleOwnera été renomméparent. (I080bc)
Correction de bugs
- Le composable
LifecycleOwnerdéplace désormais correctement son cycle de vie versDESTROYEDlors de l'élimination. Cela permet d'éviter les fuites potentielles pour le code externe qui contient une référence au cycle de vie. (I9e5b7, b/433659048) - Passage de la valeur par défaut de minSdk de l'API 21 à l'API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Contribution externe
- Supprimez les champs de sauvegarde internes inutiles de
LifecycleOwner. Merci à Jake Wharton pour sa contribution. (Ideddb)
Version 2.10.0-alpha01
30 juillet 2025
Publication d'androidx.lifecycle:lifecycle-*:2.10.0-alpha01. La version 2.10.0-alpha01 contient ces commits.
Nouvelles fonctionnalités
Ajoutez un composable
LifecycleOwnerpour permettre la création de cycles de vie à portée limitée directement dans l'UI. Cela est utile pour les composants qui doivent gérer leur propre cycle de vie de manière indépendante. Pour obtenir un exemple d'intégration de ce nouveau composable par Navigation3, consultez aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Modifications apportées à l'API
- Ajoutez une fonction de fabrique de constructeur pour
CreationExtras, en fournissant une API Kotlin plus pratique et idiomatique. (Iab2bd) - Ajout de la prise en charge native des types Nullable dans
SavedStateHandle.saved, ce qui simplifie l'enregistrement et la restauration des propriétés Nullable. (I54d69, b/421325690) - Marquez les constructeurs
SavedStateHandlecomme@VisibleForTesting. (Iff0e0, b/408002794)
Version 2.9
Version 2.9.4
17 septembre 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.4. La version 2.9.4 contient ces commits.
Correction de bugs
- Correction d'une erreur liée à l'échec de l'application du plug-in Compose Compiler, qui entraînait la rupture des artefacts Lifecycle KMP. (Ie95bc, b/443096483, b/443965665)
Version 2.9.3
27 août 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.3. La version 2.9.3 contient ces commits.
Nouvelles fonctionnalités
- Ajoutez de nouvelles cibles Kotlin Multiplatform (KMP) aux artefacts Lifecycle
*-compose. Lifecycle est désormais compatible avec les plates-formes suivantes : JVM (Android et Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) et Web (JavaScript, WasmJS). (I0a0e4)
Correction de bugs
- Mise à jour de
androidx.annotationvers la version 1.9.1 (Ic9e4f, b/397701294)
Version 2.9.2
16 juillet 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.2. La version 2.9.2 contient ces commits.
Correction de bugs
- Ajout de nouvelles cibles Kotlin Multiplatform (KMP) aux artefacts Lifecycle. Lifecycle est désormais compatible avec les plates-formes suivantes : JVM (Android et Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) et Web (JavaScript, WasmJS). Notez qu'aucune nouvelle cible KMP n'a été ajoutée aux artefacts
*-compose, car cela dépend de la version stable de Compose 1.9. (I01cb8).
Mises à jour des dépendances
- Lifecycle dépend désormais de Annotation
1.9.1pour permettre la prise en charge des nouvelles cibles KMP (Ic9e4f, b/397701294).
Version 2.9.1
4 juin 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.1. La version 2.9.1 contient ces commits.
Correction de bugs
- Correction de
SavedStateHandle.remove(key)qui n'efface pas les étatsSavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
Version 2.9.0
7 mai 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0. La version 2.9.0 contient ces commits.
Changements importants depuis la version 2.8.0
- Un nouvel artefact KMP
androidx.lifecycle:lifecycle-viewmodel-testingest disponible. Il fournit une classeViewModelScenariopour testerViewModelsde manière isolée, avec la prise en charge deonClearedetSavedStateHandle, ainsi que le test de l'arrêt et de la recréation du processus viarecreate(). - Ajoutez
getMutableStateFlowàSavedStateHandlepour renvoyer unMutableStateFlow. Cette nouvelle fonction est réservée aux clés et ne peut pas être utilisée avecgetLiveData. Une exception sera générée si vous essayez d'utiliser les deux pour accéder au même état. CreationExtrasinclut désormais des surcharges d'opérateur de type Map pour permettre une manipulation idiomatique du contenu en Kotlin. Il permet d'utiliserin,+=et+avecCreationExtras.
Compatibilité avec la sérialisation KotlinX
Avec la prise en charge de la sérialisation KotlinX ajoutée dans SavedState
1.3.0, nous avons introduitsaved, un délégué de propriété différé, pour faciliter le stockage des classes@Serializabledans unSavedStateHandleet la restauration automatique de ces classes en cas d'arrêt et de recréation du processus. Veuillez noter que le déléguésavedest différé et n'appellera pas le lambdainitni n'enregistrera quoi que ce soit dansSavedStateHandletant qu'il n'y aura pas accès.@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
- Le module
lifecycle-testingest désormais compatible avec KMP, y compris les API telles queTestLifecycleOwner. - Le module
lifecycle-viewmodel-savedstateest désormais compatible avec KMP, y compris les API telles queSavedStateHandle. androidx.compose.ui.platform.LocalLifecycleOwnerest désormais disponible dans l'ensemble de sources communes.NewInstanceFactoryest désormais disponible sur les cibles JVM Desktop et Android.
Nouveaux comportements
- L'état
Lifecycle.DESTROYEDest un état final. Toute tentative de déplacement d'unLifecyclevers un autre état entraînera désormais unIllegalStateException. SavedStateHandlen'inclut plus deSavedStateProvider.saveState()lorsque leBundlerenvoyé est vide.
Version 2.9.0-rc01
23 avril 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-rc01. La version 2.9.0-rc01 contient ces commits.
Avertissement de compatibilité de l'API Lint
- JetBrains a modifié
KaCallableMemberCallen passant d'une classe à une interface, ce qui rompt la compatibilité binaire. Cela peut entraîner des plantages si la version AGP de votre projet diffère de celle utilisée pour compiler les vérifications lint. Cette mise à jour a été effectuée dans aosp/3577172, mais elle n'apparaissait pas dans les notes de version. Nous la précisons ici. Solution recommandée : installez la dernière version stable d'AGP. Si vous ne pouvez pas effectuer la mise à jour complète, utilisezandroid.experimental.lint.versionpour aligner les vérifications Lint sur votre version AGP. Pour en savoir plus, consultez Modifications du comportement de Compose Runtime.
Version 2.9.0-beta01
9 avril 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-beta01. La version 2.9.0-beta01 contient ces commits.
Modifications apportées à l'API
Lifecycle ViewModel Composeutilise désormais la même configuration Kotlin multiplate-forme que Compose Runtime 1.7.1 et versions ultérieures. Les artefacts-desktopont été supprimés et les artefacts-jvmStubset-linuxx64Stubsont été ajoutés. Aucune de ces cibles n'est censée être utilisée. Elles servent d'espace réservé pour aider les efforts de Jetbrains Compose. (I5cb14, b/406592090)
Mises à jour des dépendances
- Cette bibliothèque cible désormais le langage Kotlin 2.0 et nécessite KGP 2.0.0 ou version ultérieure. (Idb6b5)
Lifecycle ViewModel Composedépend désormais de Compose 1.7.8. (I5cb14, b/406592090)
Version 2.9.0-alpha13
26 mars 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha13 sans aucune modification publique notable. La version 2.9.0-alpha13 contient ces commits.
Version 2.9.0-alpha12
12 mars 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha12. La version 2.9.0-alpha12 contient ces commits.
Modifications apportées à l'API
- Ajoutez l'annotation
@MainThreadàViewModelProvider.getsur toutes les plates-formes KMP compatibles. (I7e8dd, b/397736115) SavedState*Delegatesa été renomméSavedState*Delegate. (I8589b, b/399629301)
Version 2.9.0-alpha11
26 février 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha11. La version 2.9.0-alpha11 contient ces commits.
Modifications apportées à l'API
- Ajout du paramètre
SavedStateConfigaux déléguéssaved()(I39b3a)
Version 2.9.0-alpha10
12 février 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha10. La version 2.9.0-alpha10 contient ces commits.
Modifications apportées à l'API
- Déplacez
MutableStateSerializerverssavedstate-composedepuislifecycle-viewmodel-compose. (I4f690, b/378895074)
Contribution externe
- Ajout d'un problème Lint pour l'appel de
Lifecycle::currentStatedans la composition, en suggérant plutôt d'utilisercurrentStateAsalue().valuepour s'assurer que les modifications de l'état du cycle de vie entraînent correctement une recomposition. Merci Steven Schoen ! (Iad484)
Version 2.9.0-alpha09
29 janvier 2025
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha09. La version 2.9.0-alpha09 contient ces commits.
Nouvelles fonctionnalités
- Ajout de
MutableStateSerializerpour la sérialisation deandroidx.compose.runtime.MutableState. (Idfc48, b/378895074)
Modifications apportées à l'API
- Remplacer les fonctions déléguées
SavedStateHandle.saved()surchargées par des paramètres par défaut (Icd1c1) AbstractSavedStateViewModelFactoryest obsolète, car il crée unSavedStateHandlepour chaqueViewModel, ce qui entraîne une surcharge inutile. Utilisez plutôtViewModelProvider.FactoryavecCreationExtras.createSavedStateHandlepour créer desViewModelplus efficacement. (Ia920b, b/388590327)
Version 2.9.0-alpha08
11 décembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha08. La version 2.9.0-alpha08 contient ces commits.
Nouvelles fonctionnalités
- Ajoutez
ViewModelScenario.recreatepour simuler un arrêt du processus système, en recréant leViewModelen cours de test et tous les composants associés. (Id6a69, b/381063087) - Les instances
LifecycleOwneretViewModelStoreOwnerrécupérées via leurs APIfindViewTreerespectives peuvent désormais être résolues par le biais de parents disjoints d'une vue, comme unViewOverlay. Pour en savoir plus sur les parents de vues disjointes, consultez les notes de version de core ou la documentation dansViewTree.setViewTreeDisjointParent. (I800f4)
Modifications apportées à l'API
- Rendre les noms et l'organisation des packages plus cohérents avec
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Correction de bugs
- Cette bibliothèque utilise désormais les annotations de nullité JSpecify, qui sont de type "type-use". Les développeurs Kotlin doivent utiliser l'argument de compilateur suivant pour garantir une utilisation correcte :
-Xjspecify-annotations=strict(il s'agit de la valeur par défaut à partir de la version 2.1.0 du compilateur Kotlin). (Ie4340, b/326456246) - Documentez la séquence de compensation
ViewModel.onCleared. (I586c7, b/363984116)
Version 2.9.0-alpha07
13 novembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha07. La version 2.9.0-alpha07 contient ces commits.
Compatibilité avec Kotlin Multiplatform
- Lifecycle
ViewModel SavedStateest désormais compatible avec KMP. Cela vous permet d'utiliserSavedStateHandledans le code commun. (Ib6394, b/334076622)
Compatibilité avec la sérialisation KotlinX
Avec la prise en charge de la sérialisation KotlinX ajoutée dans SavedState
1.3.0-alpha05, nous avons introduitsaved, un délégué de propriété différé, pour faciliter le stockage des classes@Serializabledans unSavedStateHandleet la restauration automatique de ces classes en cas d'arrêt et de recréation du processus. Veuillez noter que le déléguésavedest différé et n'appellera pas le lambdainitni n'enregistrera quoi que ce soit dansSavedStateHandletant qu'il n'y aura pas accès. (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 } }
Modifications apportées à l'API
- Ajoutez
getMutableStateFlowàSavedStateHandlepour renvoyer unMutableStateFlow. Cette nouvelle fonction est réservée aux clés et ne peut pas être utilisée avecgetLiveData. Une exception sera générée si vous essayez d'utiliser les deux pour accéder au même état. (I04a4f, b/375408415)
Version 2.9.0-alpha06
30 octobre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha06. La version 2.9.0-alpha06 contient ces commits.
Nouveaux comportements
- L'état
Lifecycle.DESTROYEDest un état final. Toute tentative de déplacement d'unLifecyclevers un autre état entraînera désormais unIllegalStateException. (I116c4, b/370577987) SavedStateHandlen'inclut plus deSavedStateProvider.saveState()lorsque leBundlerenvoyé est vide. (I910b5, b/370577987)
Correction de bugs
Lifecycle.eventFlowse termine désormais correctement lorsqueLifecycleestDESTROYED(I293b2, b/374043130).
Version 2.9.0-alpha05
16 octobre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha05 sans modification notable. La version 2.9.0-alpha05 contient ces commits.
Version 2.9.0-alpha04
2 octobre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha04. La version 2.9.0-alpha04 contient ces commits.
Kotlin Multiplatform
- Le module
lifecycle-viewmodel-savedstateest désormais configuré pour être compatible avec KMP en vue de la mise à disposition d'API telles queSavedStateHandledans l'ensemble de sources commun lors d'une prochaine version. (I503ed, I48764, b/334076622)
Version 2.9.0-alpha03
18 septembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha03. La version 2.9.0-alpha03 contient ces commits.
Correction de bugs
- Dans Lifecycle
2.8.6, l'erreur LintNullSafeMutableLiveDataest désormais mieux compatible avec les casts intelligents, ce qui permet d'éviter les faux positifs. (85fed6, b/181042665)
Mises à jour des dépendances
- Depuis Lifecycle
2.8.6: Lifecycle Runtime Compose dépend désormais de Compose Runtime1.7.1. - Lifecycle Runtime dépend désormais de ProfileInstaller
1.4.0
Version 2.9.0-alpha02
4 septembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha02. La version 2.9.0-alpha02 contient ces commits.
Correction de bugs
- Depuis Lifecycle
2.8.5: mise à jour des règles ProGuardandroidx.lifecycle.ReportFragmentpour permettre l'obscurcissement . (ff898e1)
Contribution externe
- Déplacez
androidx.compose.ui.platform.LocalLifecycleOwnervers l'ensemble de sources commun (KMP). Merci à Ivan Matkov de JetBrains pour sa contribution. (8cd5d03) - À partir de Lifecycle
2.8.5: le délégué d'extension SavedStateHandle.saveable` prend désormais en charge les valeurs nullables. Merci à Roman Kalukiewicz pour sa contribution. (0d78ea6)
Version 2.9.0-alpha01
7 août 2024
Publication d'androidx.lifecycle:lifecycle-*:2.9.0-alpha01. La version 2.9.0-alpha01 contient ces commits.
Kotlin Multiplatform
lifecycle-testingest désormais compatible avec KMP. (Iea41e)- Ajout de la prise en charge de la cible multiplate-forme Kotlin
linuxArm64(I139d3, b/338268719)
Nouvelles fonctionnalités
- Un nouvel artefact KMP
androidx.lifecycle:lifecycle-viewmodel-testingest disponible. Il fournit une classeViewModelScenariopermettant de tester les ViewModels de manière isolée, avec la prise en charge deonCleared(toutes les plates-formes) etSavedStateHandle(Android uniquement). (337f68d, c9b3409, 9799a95c, b/264602919) - La création d'un
ViewModelavecViewModelProviderest désormais thread-safe. Les annotations@MainThreadont été supprimées. (Ifd978, b/237006831)
Modifications apportées à l'API
- Ajoutez la fonction de fabrique
CreationExtras.Key()pour simplifier la création d'objetsCreationExtras.Keyanonymes. (I970ee) CreationExtrasinclut désormais des surcharges d'opérateur de type Map pour permettre une manipulation idiomatique du contenu en Kotlin. Il permet d'utiliserin,+=et+avecCreationExtras. (Ib4353)CreationExtrasimplémente maintenant les méthodesequals,hashCodeettoString. (Ib4353)NewInstanceFactoryest désormais disponible sur les cibles JVM Desktop et Android. (d3d0892)- Propriété d'extension intégrée pour exposer l'application sous-jacente de manière sécurisée dans la version 2.0 du langage Kotlin (I39df2)
Correction de bugs
- Suppression de la présentation manuelle de l'accès aux nouvelles API de plate-forme, car cela se fait automatiquement via la modélisation d'API lorsque vous utilisez R8 avec AGP 7.3 ou version ultérieure (par exemple, R8 version 3.3) et pour toutes les versions lorsque vous utilisez AGP 8.1 ou version ultérieure (par exemple, D8 version 8.1). Les clients qui n'utilisent pas AGP sont invités à passer à la version 8.1 ou ultérieure de D8. Consultez cet article pour en savoir plus. (If6b4c, b/345472586)
Version 2.8
Version 2.8.7
30 octobre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.7. La version 2.8.7 contient ces commits.
Modifications apportées à l'API
androidx.compose.ui.platform.LocalLifecycleOwnerest désormais disponible dans l'ensemble de sources commun (KMP). (6a3f5b3)lifecycle-runtime-compose: les artefactsdesktopont été supprimés, et les artefacts-jvmStubset-linuxx64Stubsont été ajoutés. Aucune de ces cibles n'est censée être utilisée. Elles servent d'espace réservé pour aider les efforts de Jetbrains Compose. (6a3f5b3)
Version 2.8.6
18 septembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.6. La version 2.8.6 contient ces commits.
Correction de bugs
- L'erreur Lint
NullSafeMutableLiveDataest désormais mieux compatible avec les casts intelligents, ce qui permet d'éviter les faux positifs. (85fed6, b/181042665)
Mises à jour des dépendances
- Lifecycle Runtime Compose dépend désormais de Compose Runtime
1.7.1.
Version 2.8.5
4 septembre 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.5. La version 2.8.5 contient ces commits.
Correction de bugs
- Mettez à jour les règles ProGuard
androidx.lifecycle.ReportFragmentpour autoriser l'obscurcissement . (ff898e1)
Contribution externe
- Le délégué d'extension
SavedStateHandle.saveableest désormais compatible avec les valeurs nullables. Merci à Roman Kalukiewicz pour sa contribution. (0d78ea6)
Version 2.8.4
24 juillet 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.4. La version 2.8.4 contient ces commits.
Correction de bugs
LiveData.asFlow()gère désormais correctement les cas où le Flow renvoyé est immédiatement terminé après avoir reçu une valeur déjà définie surLiveData(par exemple, lors de l'utilisation detake(1)). (I9c566)- La finalisation de
Lifecycle*Effectest désormais idempotente (c'est-à-dire que sionStopOrDisposea été appelé en raison de l'arrêt du cycle de vie, il ne sera pas appelé une deuxième fois lors de la suppression, sauf si le cycle de vie revient àSTARTED). (I5f607, b/352364595)
Version 2.8.3
1er juillet 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.3. La version 2.8.3 contient ces commits.
Correction de bugs
- Correction d'un problème de rétrocompatibilité de Lifecycle 2.8 avec Compose 1.6.0 et versions antérieures lors de l'utilisation de la réduction du code. (aosp/3133056, b/346808608)
Version 2.8.2
12 juin 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.2. La version 2.8.2 contient ces commits.
Correction de bugs
- Correction des erreurs
CompositionLocal LocalLifecycleOwner not presentlors de l'utilisation de Lifecycle 2.8.X avec Compose 1.6.X ou version antérieure. Vous pouvez désormais utiliser Lifecycle 2.8.2 avec n'importe quelle version de Compose sans aucune solution de contournement requise. (aosp/3105647, b/336842920) ViewModelProviderne plante plus lors du mélange de versions antérieures de dépendances LifecyclecompileOnlyavec des versions équivalentes ou supérieures à 2.8, ce qui corrige les problèmes liés aux bibliothèques telles que LeakCanary. (I80383, b/341792251)
Version 2.8.1
29 mai 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.1. La version 2.8.1 contient ces commits.
Correction de bugs
lifecycle-viewmodel-composene comporte désormais qu'une dépendance commune surcompose-runtime, ce qui supprime sa dépendance commune surcompose-ui. L'artefact Android conserve soncompose-uipour la compatibilité. (aosp/3079334, b/339562627)- L'intégration
saveabledeViewModelà l'aide de délégués de propriété utilise désormais le nom de classe dans la clé générée automatiquement, ce qui évite les conflits si plusieurs classes utilisent le mêmeSavedStateHandle. (aosp/3063463)
Version 2.8.0
14 mai 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0. La version 2.8.0 contient ces commits.
Changements importants depuis la version 2.7.0
LocalLifecycleOwnera été déplacé de Compose UI verslifecycle-runtime-composeafin que ses API d'assistance basées sur Compose puissent être utilisées en dehors de Compose UI.- L'artefact
lifecycle-runtime-composecontient désormais les APIdropUnlessResumedetdropUnlessStarted, qui vous permettent de supprimer les clics ou autres événements qui se produisent même après queLifecycleOwnerest passé en dessous de la valeurLifecycle.Statedonnée. Par exemple, cela peut être utilisé avec Navigation Compose pour éviter de gérer les événements de clic après le début d'une transition vers un autre écran :onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ViewModel.viewModelScopeest désormais un paramètre de constructeur pouvant être remplacé, ce qui vous permet d'injecter votre propre répartiteur etSupervisorJob()ou de remplacer celui par défaut en utilisantbackgroundScopedisponible dansrunTest. (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) }ViewModela été réécrit en Kotlin et utilise désormaisAutoClosableau lieu deCloseable. Il permet désormais d'ajouter des objetsAutoCloseableavec unkeyqui permet de les récupérer viagetCloseable().L'appel de
LifecycleStartEffectetLifecycleResumeEffectsans clé est désormais une erreur, suivant la même convention que l'APIDisposableEffectque ces API reflètent.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)est désormais obsolète et remplacé parLiveData.toPublisher(lifecycleOwner).Les extensions Kotlin
lifecycle-livedata-core-ktxont été déplacées vers le modulelifecycle-livedata-core.Le
NullSafeMutableLiveDataa été refactorisé pour éviter de nombreux faux positifs.
Compatibilité du cycle de vie avec Kotlin Multiplatform
Les API Lifecycle principales dans Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event et LifecycleRegistry sont désormais fournies dans des artefacts compatibles avec Kotlin Multiplatform.
Artefacts concernés :
lifecycle-commondéplace la plupart des API verscommonet est compatible avec JVM et iOS en plus d'Android.lifecycle-runtimedéplace la plupart des API verscommonet est compatible avec JVM et iOS en plus d'Android.lifecycle-runtime-ktxest désormais vide, toutes les API ayant été déplacées verslifecycle-runtime.lifecycle-runtime-composedéplace toutes les API verscommonet fournit un artefact Android, correspondant à la compatibilité multiplate-forme deandroidx.compose.
Compatibilité de ViewModel avec Kotlin Multiplatform
L'artefact lifecycle-viewmodel et les API telles que ViewModel, ViewModelStore, ViewModelStoreOwner et ViewModelProvider sont désormais fournis dans des artefacts compatibles avec Kotlin Multiplatform.
Pour tenir compte de ce changement, les méthodes telles que celles sur ViewModelProvider qui prenaient un java.lang.Class<T> ont désormais une méthode équivalente qui prend un kotlin.reflect.KClass<T>.
La compatibilité binaire sur Android a été maintenue, mais il existe quelques différences notables entre la surface de l'API Android et la surface de l'API commune :
- La construction d'une instance
ViewModelProviders'effectue désormais via les méthodesViewModelProvider.create()au lieu d'appeler directement son constructeur. ViewModelProvider.NewInstanceFactoryetViewModelProvider.AndroidViewModelFactoryne sont disponibles que sur Android.- Il est recommandé d'étendre les fabriques personnalisées à partir de
ViewModelProvider.Factoryet d'utiliser la méthodecreatequi accepte unCreationExtrasou d'utiliser le DSL KotlinviewModelFactory.
- Il est recommandé d'étendre les fabriques personnalisées à partir de
- L'utilisation de
ViewModelProvidersans usine personnalisée sur les plates-formes non JVM entraînera uneUnsupportedOperationException. Sur les plates-formes JVM, la compatibilité est préservée en utilisant le constructeur ViewModel sans arguments si aucune fabrique personnalisée n'est fournie. viewModelScopesera remplacé parEmptyCoroutineContextsur les plates-formes oùDispatchers.Mainn'est pas disponible (par exemple, Linux).
Artefacts concernés :
lifecycle-viewmodeldéplace la plupart des API verscommonet est compatible avec JVM et iOS en plus d'Android.lifecycle-viewmodel-ktxest désormais vide, toutes les API ayant été déplacées verslifecycle-viewmodel.lifecycle-viewmodel-composedéplace toutes les API verscommonet fournit un artefact Android, correspondant à la compatibilité multiplate-forme deandroidx.compose.
Nouveaux comportements
InitializerViewModelFactory(y compris la fonction de créationviewModelFactory) génère désormais uneIllegalArgumentExceptionsi uninitializeravec le mêmeclazz: KClass<VM : ViewModel>a déjà été ajouté. (Ic3a36)
Problèmes connus
lifecycle-*:2.8.0nécessite une version minimale de Compose 1.7.0-alpha05 (b/336842920).
Version 2.8.0-rc01
1er mai 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-rc01. La version 2.8.0-rc01 contient ces commits.
Correction de bugs
- Correction d'un problème qui empêchait l'empaquetage correct du profil de référence pour les classes
lifecycle-common. Ils sont désormais inclus dans l'AARlifecycle-runtime. (aosp/3038274, b/322382422) - Correction d'un changement d'ordre involontaire dans la façon dont les instances
AutoCloseableassociées à un ViewModel sont effacées. L'ordre précédent (addCloseable(String, AutoCloseable), puisaddClosable(AutoCloseable), puisonCleared()) a été rétabli. (aosp/3041632) - Améliorez le comportement de création par défaut pour
viewModelScopepour les environnements natifs et JVM Desktop. (aosp/3039221)
Contribution externe
- Merci à Victor Kropp d'avoir amélioré la vérification du thread principal sur JVM Desktop. (aosp/3037116)
Version 2.8.0-beta01
17 avril 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-beta01. La version 2.8.0-beta01 contient ces commits.
Nouvelles fonctionnalités
- L'artefact
lifecycle-runtime-composeest désormais compatible avec Kotlin Multiplatform, ce qui permet de déplacer son code verscommonet d'expédier un artefact Android, correspondant à la compatibilité multiplate-forme pourandroidx.compose. (If7a71, I4f4a0, b/331769623)
Version 2.8.0-alpha04
3 avril 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-alpha04. La version 2.8.0-alpha04 contient ces commits.
Nouvelles fonctionnalités
- L'artefact
lifecycle-viewmodel-composeest désormais compatible avec Kotlin Multiplatform, ce qui permet de déplacer son code verscommonet d'expédier un artefact Android, correspondant à la compatibilité multiplate-forme deandroidx.compose. Pour s'adapter à ce changement, la méthode composableviewModelaccepte désormais unKClassen plus d'unjava.lang.Class. (b/330323282)
Correction de bugs
- Le
NullSafeMutableLiveDataa été refactorisé pour éviter de nombreux faux positifs. (I2d8c1, Iafb18, I03463, I7ecef)
Mise à jour de la dépendance
- L'artefact
lifecycle-viewmodel-composedépend désormais de Compose 1.6.0. - Lifecycle dépend désormais de Profile Installer 1.3.1.
Version 2.8.0-alpha03
20 mars 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-alpha03. La version 2.8.0-alpha03 contient ces commits.
Nouvelles fonctionnalités
ViewModel.viewModelScopeest désormais un paramètre de constructeur pouvant être remplacé, ce qui vous permet d'injecter votre propre répartiteur etSupervisorJob()ou de remplacer celui par défaut en utilisantbackgroundScopedisponible dansrunTest. (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é avec Kotlin Multiplatform
L'artefact lifecycle-viewmodel et les API telles que ViewModel, ViewModelStore, ViewModelStoreOwner et ViewModelProvider sont désormais fournis dans des artefacts compatibles avec Kotlin Multiplatform. (b/214568825)
Pour tenir compte de ce changement, les méthodes telles que celles sur ViewModelProvider qui prenaient un java.lang.Class<T> ont désormais une méthode équivalente qui prend un kotlin.reflect.KClass<T>.
La compatibilité binaire sur Android a été maintenue, mais il existe quelques différences notables entre la surface de l'API Android et la surface de l'API commune :
- La construction d'une instance
ViewModelProviders'effectue désormais via les méthodesViewModelProvider.create()au lieu d'appeler directement son constructeur. ViewModelProvider.NewInstanceFactoryetViewModelProvider.AndroidViewModelFactoryne sont disponibles que sur Android.- Il est recommandé d'étendre les fabriques personnalisées à partir de
ViewModelProvider.Factoryet d'utiliser la méthodecreatequi accepte unCreationExtrasou d'utiliser le DSL KotlinviewModelFactory.
- Il est recommandé d'étendre les fabriques personnalisées à partir de
- L'utilisation de
ViewModelProvidersans usine personnalisée sur les plates-formes non JVM entraînera uneUnsupportedOperationException. Sur les plates-formes JVM, la compatibilité est préservée en utilisant le constructeur ViewModel sans arguments si aucune fabrique personnalisée n'est fournie. viewModelScopesera remplacé parEmptyCoroutineContextsur les plates-formes oùDispatchers.Mainn'est pas disponible (par exemple, Linux).
Nouveaux comportements
InitializerViewModelFactory(y compris la fonction de créationviewModelFactory) génère désormais uneIllegalArgumentExceptionsi uninitializeravec le mêmeclazz: KClass<VM : ViewModel>a déjà été ajouté. (Ic3a36)
Correction de bugs
ViewModel.getCloseablegère désormais les clés en double : si lekeyest déjà associé à une ressourceAutoCloseable, l'ancienne ressource sera remplacée et fermée immédiatement. (Ibeb67)- L'accès au
viewModelScoped'unViewModelest désormais thread-safe. (If4766, b/322407038)
Contribution externe
LocalLifecycleOwnerest passé de Compose UI à lifecycle-runtime-compose afin que ses API d'assistance basées sur Compose puissent être utilisées en dehors de Compose UI. Merci à Jake Wharton pour sa contribution. (I6c41b, b/328263448)
Version 2.8.0-alpha02
21 février 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-alpha02. Liste des commits de la version 2.8.0-alpha02
Nouvelles fonctionnalités
- Les API
dropUnlessResumedetdropUnlessStartedont été ajoutées. Elles vous permettent de supprimer les clics ou d'autres événements qui se produisent même après queLifecycleOwnerest passé en dessous de la valeurLifecycle.Statedonnée. Par exemple, cela peut être utilisé avec Navigation Compose pour éviter de gérer les événements de clic après le début d'une transition vers un autre écran :onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685).
Conversions Kotlin
ViewModelest désormais écrit en Kotlin (I16f26, b/214568825).- Les extensions Kotlin
lifecycle-viewmodel-ktxont été déplacées vers le module de cycle de vie de base. (Id787b, b/274800183) - Les extensions Kotlin
lifecycle-runtime-ktxont été déplacées vers le module de cycle de vie de base. (Ic3686, b/274800183) - Les extensions Kotlin
lifecycle-livedata-core-ktxont été déplacées vers le module de cycle de vie de base. (I54a3d, b/274800183)
Compatibilité avec Kotlin Multiplatform
- Les API Lifecycle principales dans
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventetLifecycleRegistrysont désormais fournies dans des artefacts compatibles avec Kotlin Multiplatform. (b/317249252)
Modifications apportées à l'API
- L'appel de
LifecycleStartEffectetLifecycleResumeEffectsans clé est désormais une erreur, suivant la même convention que l'APIDisposableEffectque ces API reflètent. (Ib0e0c, b/323518079) ViewModelutilise désormaisAutoCloseableau lieu deCloseable. Il s'agit d'une modification rétrocompatible. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)est désormais obsolète et remplacé parLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
Contribution externe
- Merci à Ivan Matkov de Jetbrains pour son aide dans la migration de Lifecycle vers Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Version 2.8.0-alpha01
24 janvier 2024
Publication d'androidx.lifecycle:lifecycle-*:2.8.0-alpha01. Liste des commits de la version 2.8.0-alpha01
Nouvelles fonctionnalités
ViewModelpermet désormais d'ajouter des objetsCloseableavec unkeyqui permet de les récupérer viagetCloseable(). (I3cf63)
Version 2.7
Version 2.7.0
10 janvier 2024
Publication d'androidx.lifecycle:lifecycle-*:2.7.0. Liste des commits de la version 2.7.0
Modifications importantes depuis la version 2.6.0
TestLifecycleOwnerinclut désormais une fonction de suspensionsetCurrentState()qui garantit que le changement d'état et tous les rappelsLifecycleObserversont effectués avant le retour. Contrairement à la définition directe de la propriétécurrentState, cette méthode n'utilise pasrunBlocking, ce qui la rend sûre à utiliser dans une coroutine telle que celle fournie parrunTest.- Les extensions
LiveDatademapetswitchMapreflètent désormais le comportement dedistinctUntilChanged. Sivalueest défini pourLiveData, la fonctionmap/switchMapest immédiatement appelée pour remplirvaluede l'objetLiveDatarenvoyé. Cela garantit que la valeur initiale sera définie lors de la première composition (lorsqu'elle est utilisée avecobserveAsState()), mais ne modifie pas le comportement d'observation. Les valeurs mises à jour à partir de la sourceLiveDatane s'appliqueront que lorsque vous commencerez à observer leLiveData. - Cette version corrige un problème qui empêchait
SavedStateHandlede restaurer correctement les classesParcelablepersonnalisées après la fin et la recréation du processus. En raison des informations de type perdues par le framework Android, les tableaux de Parcelables personnalisés nécessitent un travail supplémentaire (création manuelle d'un tableau typé du bon type). La documentation surget,getLiveDataetgetStateFlowmentionne désormais spécifiquement cette limitation. - Les règles ProGuard keep associées à
LifecycleObserveront été supprimées. Cela signifie que le code ProGuard qui souhaite utiliser des API par réflexion (par exemple, en utilisant l'annotation@OnLifecycleEventdepuis longtemps obsolète) devra fournir ses propres règles de conservation pour son cas d'utilisation spécifique.
Observabilité des événements de cycle de vie
- Au lieu d'utiliser un
LifecycleEventObserver, vous pouvez désormais observer unFlowdeLifecycle.Eventvia la méthode d'extensionLifecycle.asFlow(). - Les utilisateurs de Jetpack Compose peuvent désormais utiliser
LifecycleEventEffectpour exécuter des effets secondaires Compose en fonction deLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Les utilisateurs de Jetpack Compose peuvent utiliser
LifecycleStartEffectetLifecycleResumeEffectpour gérer les paires d'événements (démarré à arrêté et repris à mis en pause, respectivement). Cette API est identique à celle deDisposableEffectet convient aux cas où la modification apportée lorsque l'état augmente doit être inversée lorsqu'il diminue.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Pour en savoir plus, consultez Exécuter du code sur des événements de cycle de vie.
Observabilité de l'état du cycle de vie
- Le
Lifecycle.Stateactuel peut désormais être observé via la propriétéLifecycle.currentStateFlow, qui renvoie unStateFlowoùvalueest leLifecycle.Stateactuel. - Les utilisateurs de Jetpack Compose peuvent utiliser l'extension
Lifecycle.currentStateAsState()pour exposer directementLifecycle.Stateen tant queStateCompose. Cela équivaut àlifecycle.currentStateFlow.collectAsState()(et constitue une alternative plus courte).
Pour en savoir plus, consultez Collecter l'état du cycle de vie avec des flux.
Version 2.7.0-rc02
13 décembre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-rc02. Liste des commits de la version 2.7.0-rc02
Correction de bugs
- Correction d'un problème qui empêchait
SavedStateHandlede restaurer correctement les classesParcelablepersonnalisées après la fin du processus et sa recréation. En raison des informations de type perdues par le framework Android, les tableaux de Parcelables personnalisés nécessitent un travail supplémentaire (création manuelle d'un tableau typé du bon type). La documentation surget,getLiveDataetgetStateFlowmentionne désormais spécifiquement cette limitation. (I0b55a)
Version 2.7.0-rc01
15 novembre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-rc01. Liste des commits de la version 2.7.0-rc01
Correction de bugs
LifecycleStartEffectetLifecycleResumeEffectsuppriment et recréent désormais correctement le bloc d'effet siLifecycleOwnerest modifié. (Ia25c6)
Version 2.7.0-beta01
1er novembre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-beta01 sans aucune modification. Liste des commits de la version 2.7.0-beta01
- Mise à jour de la version bêta, sans modification majeure de cette version.
Version 2.7.0-alpha03
18 octobre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-alpha03. Liste des commits de la version 2.7.0-alpha03
Nouvelles fonctionnalités
lifecycle-runtime-testingcontient désormais une nouvelle vérification Lint pour éviter de définir leLifecycle.StateduTestLifecycleOwnerà l'aide du champcurrentStateà l'intérieur d'une coroutine. La vérification Lint suggère désormais la suspensionsetCurrentState, qui permet de définirLifecycle.Statesans blocage. (Icf728, b/297880630)
Correction de bugs
- Correction d'un problème avec
LiveData.switchMapoù le fait de renvoyer la même instanceLiveDatalors de l'appel initial et d'un appel ultérieur empêchait l'ajout de l'instanceLiveDataen tant que source. (Ibedcba7)
Version 2.7.0-alpha02
6 septembre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-alpha02. Liste des commits de la version 2.7.0-alpha02
Nouvelles fonctionnalités
TestLifecycleOwnerinclut désormais la fonction de suspensionsetCurrentState()pour permettre aux utilisateurs d'utiliserTestLifecycleOwnerà partir d'une coroutine telle que celle fournie parrunTest. (I329de, b/259344129)
Modifications apportées à l'API
- Tous les fichiers des modules
lifecycle-livedata-ktxont été déplacés dans le module principallifecycle-livedata. (I10c6f, b/274800183)
Nouveaux comportements
- Les extensions
LiveData.map()etLiveData.switchMap()définissent désormais l'élémentvaluede l'objetLiveDatarenvoyé si une valeur a été définie pour l'objetLiveDataprécédent. Cela garantit que l'utilisation de l'objet LiveData résultant dans Jetpack Compose présente le bon état lors de la composition initiale. (I91d2b, b/269479952) - Le
addCloseable()deViewModelferme désormais immédiatement leCloseablesi leViewModela déjà reçu un appel àonCleared(). (I4712e, b/280294730)
Correction de bugs
- À partir de Lifecycle
2.6.2: correction d'un problème qui empêchait la restauration correcte deSavedStateHandleaprès la fin du processus si l'état était restauré,save()était appelé sans enregistrer réellement l'état dans leSavedStateRegistryparent, puis l'état était à nouveau restauré. Cela corrige l'interaction entrerememberSaveableetNavHostde Navigation Compose. (aosp/2729289)
Version 2.7.0-alpha01
26 juillet 2023
Publication d'androidx.lifecycle:lifecycle-*:2.7.0-alpha01. Liste des commits de la version 2.7.0-alpha01
Modifications apportées à l'API
Lifecycle.Stateest désormais observable par Compose viaLifecycle.currentStateFlow, qui renvoie unStateFlowoùvalueest leLifecycle.Stateactuel. (Ib212d, b/209684871)- Les
Lifecycle.Eventpeuvent désormais être observés en tant queFlowavecLifecycle.asFlow().. (If2c0f, b/176311030) - L'API
LifecycleResumeEffecta été ajoutée pour exécuter desSideEffectCompose en fonction des rappels d'événementsLifecycle.Event.ON_RESUMEetLifecycle.Event.ON_PAUSE. (I60386, b/235529345) - L'API
LifecycleStartEffecta été ajoutée pour exécuter desSideEffectCompose en fonction des rappels d'événementsLifecycle.Event.ON_STARTetLifecycle.Event.ON_STOP. (I5a8d1, b/235529345) - L'API
LifecycleEventEffecta été ajoutée pour exécuter lesSideEffectCompose en fonction deLifecycle.Event. (Ic9794, b/235529345) - L'extension
Lifecycle.collectAsState()a été ajoutée pour exposer directementLifecycle.Stateen tant queStateCompose. Cela équivaut àlifecycle.currentStateFlow.collectAsState()(et constitue une alternative plus courte). (I11015, b/235529345)
Correction de bugs
- L'extension
LiveData.distinctUntilChanged()définit désormais l'élémentvaluede l'objetLiveDatarenvoyé si une valeur a été définie pour l'objetLiveDataprécédent. Cela ne change pas le comportement d'observation. Les valeurs mises à jour à partir de la sourceLiveDatas'appliquent uniquement lorsque vous commencez à observer les objetsLiveDatarenvoyés pardistinctUntilChanged(). (Ib482f) - Les règles ProGuard keep associées à
LifecycleObserveront été supprimées. Cela signifie que le code protégé par ProGuard qui souhaite utiliser des API par réflexion devra fournir ses propres règles de conservation pour son cas d'utilisation spécifique. (Ia12fd)
Version 2.6
Version 2.6.2
6 septembre 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.2. Liste des commits de la version 2.6.2
Correction de bugs
- Correction d'un problème qui empêchait la restauration correcte de
SavedStateHandleaprès la fin du processus si l'état avait été restauré, quesave()avait été appelé sans enregistrer réellement l'état dans leSavedStateRegistryparent, puis que l'état avait été restauré à nouveau. Cela corrige l'interaction entrerememberSaveableetNavHostde Navigation Compose. (aosp/2729289)
Version 2.6.1
22 mars 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.1. Liste des commits de la version 2.6.1
Mises à jour des dépendances
lifecycle-viewmodel-savedstatedépend désormais de SavedState1.2.1. (cd7251)- Lifecycle dépend désormais de ProfileInstaller
1.3.0. (f9d30b)
Version 2.6.0
8 mars 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.0. Liste des commits de la version 2.6.0
Modifications importantes depuis la version 2.5.0
LiveDatainclut désormais une nouvelle propriétéisInitializedqui indique si une valeur explicite a déjà été définie pourLiveData. Vous pouvez ainsi faire la distinction entreliveData.valuequi renvoienull, car aucune valeur n'a jamais été définie, ou une valeurnullexplicite.MediatorLiveDatacomprend désormais un constructeur pour définir une valeur initiale.- Ajout d'une extension sur
StateFlowetFlowdecollectAsStateWithLifecycle(), qui collecte des données à partir des flux et représente sa dernière valeur en tant qu'état Compose tout en prenant en compte le cycle de vie. - Abandon des méthodes
Lifecycle.launchWhenXetLifecycle.whenX, car l'utilisation d'un coordinateur de suspension peut entraîner le gaspillage de ressources dans certains cas. Nous vous recommandons d'utiliserLifecycle.repeatOnLifecycle. Pour en savoir plus sur la suspension ponctuelle des tâches, consultez cette explication sur les raisons pour lesquelles cette opération est intrinsèquement dangereuse. - Conversion Kotlin : un grand nombre de classes Lifecycle ont été converties en Kotlin. Toutes les classes converties conservent leur compatibilité binaire avec les versions précédentes. Les classes suivantes ont subi des modifications incompatibles avec la source pour les classes écrites en Kotlin :
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner.
Le tableau ci-dessous fournit les conversions sources pour la nouvelle version du cycle de vie.
| Lifecycle 2.5 | Lifecycle 2.5 (KTX) | Lifecycle 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 possibilité de valeur nulle de la méthode
onChangedd'unObservercréé en Kotlin correspond désormais à la possibilité de valeur nulle du type générique. Si vous souhaitez queObserver.onChanged()accepte un type nullable, vous devez instancierObserveravec un type nullable. - Ces classes ont également été converties en Kotlin, mais restent compatibles avec la source :
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcheretProcessLifecycleOwner.
Version 2.6.0-rc01
22 février 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-rc01. Liste des commits de la version 2.6.0-rc01
Correction de bugs
- L'extension
LiveData.distinctUntilChanged()définit désormais l'élémentvaluede l'objetLiveDatarenvoyé si une valeur a été définie pour l'objetLiveDataprécédent. Cela ne change pas le comportement d'observation. Les valeurs mises à jour à partir de la sourceLiveDatas'appliquent uniquement lorsque vous commencez à observer les objetsLiveDatarenvoyés pardistinctUntilChanged(). (Ib482f)
Version 2.6.0-beta01
8 février 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-beta01. Liste des commits de la version 2.6.0-beta01
Conversions Kotlin
LifecycleOwnerest désormais écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin. Elles doivent désormais remplacer la propriétélifecycleau lieu d'implémenter la fonctiongetLifecycle()précédente. (I75b4b, b/240298691)ViewModelStoreOwnerest désormais écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin. Elles doivent désormais remplacer la propriétéviewModelStoreau lieu d'implémenter la fonctiongetViewModelStore()précédente. (I86409, b/240298691)- L'extension Kotlin sur
LifecycleOwnerqui fournit le champlifecycleScopea été déplacée vers l'artefactlifecycle-commonà partir delifecycle-runtime-ktx. (I41d78, b/240298691) - L'extension Kotlin sur
Lifecyclequi fournit le champcoroutineScopea été déplacée vers l'artefactlifecycle-commonà partir delifecycle-runtime-ktx. (Iabb91, b/240298691)
Version 2.6.0-alpha05
25 janvier 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-alpha05. Liste des commits de la version 2.6.0-alpha05.
Conversions Kotlin
Transformationsest désormais écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin qui utilisaient directement la syntaxe, commeTransformations.map. Le code Kotlin doit à présent utiliser la syntaxe de la méthode d'extension Kotlin qui n'était auparavant disponible que lors de l'utilisation delifecycle-livedata-ktx. Lorsque vous utilisez le langage de programmation Java, les versions de ces méthodes qui utilisent une méthodeandroidx.arch.core.util.Functionsont obsolètes et remplacées par les versions qui acceptent uneFunction1Kotlin. Cette modification conserve la compatibilité binaire. (I8e14f)ViewTreeViewModelStoreOwnerest désormais écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin. Vous devez désormais importer et utiliser directement les méthodes d'extension Kotlin surViewdeandroidx.lifecycle.setViewTreeViewModelStoreOwneretandroidx.lifecycle.findViewTreeViewModelStoreOwnerpour définir et rechercher un propriétaire défini précédemment. Cette fonctionnalité est compatible avec le binaire et reste compatible avec la source pour les implémentations écrites en langage de programmation Java. (Ia06d8, Ib22d8, b/240298691)- L'interface
HasDefaultViewModelProviderFactoryest désormais écrite en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin. Elles doivent à présent remplacer les propriétésdefaultViewModelProviderFactoryetdefaultViewModelCreationExtrasplutôt que d'implémenter les précédentes fonctions correspondantes. (Iaed9c, b/240298691) Observerest désormais écrit en Kotlin. Sa méthodeonChanged()utilise à présent le nomvaluecomme paramètre. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcheretProcessLifecycleOwnersont désormais écrits en Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Version 2.6.0-alpha04
11 janvier 2023
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-alpha04. Liste des commits de la version 2.6.0-alpha04
Nouvelles fonctionnalités
LiveDatainclut désormais une nouvelle propriétéisInitializedqui indique si une valeur explicite a déjà été définie pourLiveData. Vous pouvez ainsi faire la distinction entreliveData.valuequi renvoienull, car aucune valeur n'a jamais été définie, ou une valeurnullexplicite. (Ibd018)
Modifications apportées à l'API
- Les API
collectAsStateWithLifecycle()delifecycle-runtime-composene sont plus au stade expérimental. (I09d42, b/258835424) - Abandon des méthodes
Lifecycle.launchWhenXetLifecycle.whenX, car l'utilisation d'un coordinateur de suspension peut entraîner le gaspillage de ressources dans certains cas. Nous vous recommandons d'utiliserLifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
Conversions Kotlin
ViewTreeLifecycleOwnerest désormais écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour les classes écrites en Kotlin. Vous devez désormais importer et utiliser directement les méthodes d'extension Kotlin surViewdeandroidx.lifecycle.setViewTreeLifecycleOwneretandroidx.lifecycle.findViewTreeLifecycleOwnerpour définir et rechercher un propriétaire défini précédemment. Cette action remplace l'extension Kotlin précédente danslifecycle-runtime-ktx. Cette fonctionnalité est compatible avec le binaire et reste compatible avec la source pour les implémentations écrites en langage de programmation Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreamsest désormais écrit en Kotlin. Les extensions Kotlin précédemment utilisées danslifecycle-reactivestreams-ktxont été déplacées dans le modulelifecycle-reactivestreamset sont désormais la surface principale du code écrit en Kotlin. Il s'agit d'une modification incompatible avec la source pour le code écrit en Kotlin si vous n'utilisiez pas déjà les API de méthode d'extension Kotlin. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserveretViewModelStoresont maintenant écrits en Kotlin. (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Correction de bugs
- Correction du plantage de
SavedStateHandleavec uneClassCastExceptionlorsqueget()est appelé avec un type de classe incorrect. (I6ae7c)
Version 2.6.0-alpha03
24 octobre 2022
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-alpha03. Liste des commits de la version 2.6.0-alpha03.
Correction de bugs
- Correction d'un problème lié à des contraintes entre différents modules Lifecycle qui ne fonctionnaient pas comme prévu. (I18d0d, b/249686765)
- Les erreurs générées par
LifecycleRegistry.moveToState()incluent désormais un message d'erreur plus utile qui informe les développeurs du composant à l'origine de l'erreur. (Idf4b2, b/244910446)
Version 2.6.0-alpha02
7 septembre 2022
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-alpha02. Liste des commits de la version 2.6.0-alpha02.
Modifications apportées à l'API
MediatorLiveDatacomprend désormais un constructeur pour définir une valeur initiale. (Ib6cc5, b/151244085)
Correction de bugs
- Les artefacts
Lifecyclecomprennent désormais des contraintes qui garantissent que tous les artefacts Lifecycle interdépendants utilisent la même version, ce qui met automatiquement à jour les autres dépendances en cas de mise à niveau. b/242871265 FlowLiveData.asFlow()crée désormais uncallbackFlowau lieu d'utiliser sa propre implémentationChannelpour garantir la thread safety et la conservation du contexte. (I4a8b2, b/200596935)- La fonction
asLiveDatadeFlowLiveDataconserve désormais la valeur initiale d'un objetStateFlowlors de la création du nouvel objetLiveData. (I3f530, b/157380488) - Pour Lifecycle
2.5.1: les implémentations personnalisées deAndroidViewModelFactoryappellent désormais correctement la fonctioncreate(modelClass)lorsque vous utilisez le constructeur avec état avecLifecycle2.4 ou version ultérieure. (I5b315, b/238011621)
Version 2.6.0-alpha01
29 juin 2022
Publication d'androidx.lifecycle:lifecycle-*:2.6.0-alpha01. Liste des commits de la version 2.6.0-alpha01.
Nouvelles fonctionnalités
- Ajout d'une extension sur
StateFlowetFlowdecollectAsStateWithLifecycle, qui collecte des données à partir des flux et représente sa dernière valeur en tant qu'état Compose tout en prenant en compte le cycle de vie. Le flux est récupéré et la nouvelle émission est définie sur la valeur de l'état lorsque le cycle de vie est au moins égal à un certainLifecycle.State. Lorsque le cycle de vie passe en dessous de ceLifecycle.State, la collecte de flux s'arrête et la valeur de l'état n'est pas mise à jour. (I1856e, b/230557927)
Version 2.5
Version 2.5.1
27 juillet 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.1. Liste des commits de la version 2.5.1.
Correction de bugs
- Les implémentations personnalisées de
AndroidViewModelFactoryappellent désormais correctement la fonctioncreate(modelClass)lors de l'utilisation du constructeurAndroidViewModelFactoryavec état avecLifecycle2.4 ou version ultérieure. (I5b315, b/238011621)
Version 2.5.0
29 juin 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0. Liste des commits de la version 2.5.0
Modifications importantes depuis la version 2.4.0
SavedStateHandlepropose maintenant une APIgetStateFlow()qui renvoie unStateFlowKotlin pour surveiller les modifications de valeur au lieu d'utiliserLiveData.ViewModel CreationExtras : lors de l'écriture d'un
ViewModelProvider.Factorypersonnalisé, il n'est plus nécessaire d'étendreAndroidViewModelFactoryouAbstractSavedStateViewModelFactorypour accéder àApplicationou àSavedStateHandle, respectivement. En revanche, ces champs sont fournis à chaque sous-classe deViewModelProvider.Factoryen tant queCreationExtrasvia la nouvelle surcharge decreate:create(Class<T>, CreationExtras). Ces éléments supplémentaires sont fournis automatiquement par votre activité ou fragment lorsque vous utilisez respectivement les champs Activité1.5.0et 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-viewmodelfournit désormais un DSLviewModelFactoryKotlin qui vous permet de définir votreViewModelProvider.Factoryen fonction d'un ou de plusieurs initialiseurs lambda, un pour chaque classeViewModelcompatible avec votre fabrique personnalisée, à l'aide deCreationExtrascomme source de données 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-composepropose maintenant une APIviewModel()qui nécessite une fabrique lambda pour créer une instanceViewModelsans créer deViewModelProvider.Factorypersonnalisé.// 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) }Intégration de l'économiseur Compose SavedStateHandle : l'artefact
lifecycle-viewmodel-composecontient désormais de nouvelles API expérimentales dansSavedStateHandle.saveablequi permettent àrememberSaveabled'utiliser un comportement reposant sur leSavedStateHandled'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) } }Ajout d'une API
addCloseable()et d'une surcharge de constructeur qui vous permet d'ajouter un ou plusieurs objetsCloseableauViewModel, qui seront clôturés lorsqueViewModelsera effacé sans nécessiter de travail manuel dansonCleared().Par exemple, pour créer un niveau d'accès de coroutine que vous pouvez injecter dans un ViewModel, mais que vous pouvez contrôler via un test, vous pouvez créer un
CoroutineScopequi implémenteCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }Vous pouvez ensuite utiliser ceci dans votre constructeur
ViewModeltout en conservant la même durée de vie queviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Nouveaux comportements
- Toute tentative de déplacement de
Lifecycle.StatedeINITIALIZEDversDESTROYEDgénère désormais systématiquement unIllegalStateException, que leLifecyclesoit associé à un observateur ou non. LifecycleRegistryefface maintenant ses observateurs lorsqu'ils atteignent l'étatDESTROYED.
Version 2.5.0-rc02
15 juin 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-rc02. Liste des commits de la version 2.5.0-rc02
Correction de bugs
ViewModelProviderne plante plus lors du mélange de versions antérieures de dépendances Lifecycle compileOnly avec des versions équivalentes ou supérieures à 2.5. (I81a66, b/230454566)
Version 2.5.0-rc01
11 mai 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-rc01. Liste des commits de la version 2.5.0-rc01.
Correction de bugs
MediatorLiveData.addSource()génère désormais une exceptionNullPointerExceptionlorsqu'une sourcenullest transmise au lieu de propager la sourcenullaux observateurs. (Ibd0fb, b/123085232)
Version 2.5.0-beta01
20 avril 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-beta01. Liste des commits de la version 2.5.0-beta01.
Modifications apportées à l'API
- Ajout de délégués de propriété
SavedStateHandle.saveablepour utiliser des noms de propriété comme clés pour l'état persistant dansSavedStateHandle. (I8bb86, b/225014345)
Correction de bugs
- L'imbrication d'un
NavHostdans un autreNavHostau sein d'un onglet de navigation inférieure non primaire entraînait une exceptionIllegalStateExceptionen cas d'utilisation de plusieurs piles "Retour". Ce problème a été résolu. (I11bd5, b/228865698)
Version 2.5.0-alpha06
6 avril 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha06. Liste des commits de la version 2.5.0-alpha06.
Nouvelles fonctionnalités
- Ajout d'une surcharge expérimentale
MutableStateàSavedStateHandle.saveablepour refléterrememberSaveable. (I38cfe, b/224565154)
Modifications apportées à l'API
CreationExtrasest désormais abstrait au lieu d'être scellé. (Ib8a7a)
Correction de bugs
- Correction d'une erreur
IllegalStateException: Already attached to lifecycleOwnercausée parSavedStateHandleController. (I7ea47, b/215406268)
Version 2.5.0-alpha05
23 mars 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha05. Liste des commits de la version 2.5.0-alpha05.
Nouvelles fonctionnalités
- Le module
lifecycle-viewmodel-composefournit désormaisSavedStateHandleSaver, une API expérimentale qui garantit que les valeurs deSavedStateHandlesont intégrées correctement avec le même état d'instance enregistré que celui utilisé parrememberSaveable. (Ia88b7, b/195689777)
Modifications apportées à l'API
- Correction d'un problème de compatibilité entre Lifecycle 2.3 et les versions plus récentes de Lifecycle en Java. (I52c8a, b/219545060)
Correction de bugs
SavedStateViewFactoryest désormais compatible avecCreationExtras, même lorsqu'ils ont été initialisés avec unSavedStateRegistryOwner. Les arguments initialisés sont ignorés si des éléments supplémentaires sont fournis. (I6c43b, b/224844583)
Version 2.5.0-alpha04
9 mars 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha04. Liste des commits de la version 2.5.0-alpha04.
Modifications apportées à l'API
SavedStateHandlepropose maintenant une APIgetStateFlow()qui renvoie unStateFlowKotlin pour surveiller les modifications de valeur au lieu d'utiliserLiveData. (Iad3ab, b/178037961)
Version 2.5.0-alpha03
23 février 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha03. Liste des commits de la version 2.5.0-alpha03.
Nouvelles fonctionnalités
- Ajout d'une API
addCloseable()et d'une surcharge de constructeur qui vous permet d'ajouter un ou plusieurs objetsCloseableauViewModel, qui seront clôturés lorsqueViewModelsera effacé sans nécessiter de travail manuel dansonCleared(). (I55ea0) lifecycle-viewmodelfournit désormais unInitializerViewModelFactoryqui vous permet d'ajouter un lambda pour traiter des classesViewModelparticulières, en utilisantCreationExtrascomme source de données principale. (If58fc, b/216687549)lifecycle-viewmodel-composepropose maintenant une APIviewModel()qui nécessite une fabrique lambda pour créer une instanceViewModelsans créer deViewModelProvider.Factorypersonnalisé. (I97fbb, b/216688927)
Modifications apportées à l'API
- Vous pouvez maintenant créer un
ViewModelavecCreationExtrasvialifecycle-viewmodel-compose. (I08887, b/216688927)
Nouveaux comportements
- Toute tentative de déplacement de
Lifecycle.StatedeINITIALIZEDversDESTROYEDgénère désormais systématiquement unIllegalStateException, que leLifecyclesoit associé à un observateur ou non. (I7c390, b/177924329) LifecycleRegistryefface maintenant ses observateurs lorsqu'ils atteignent l'étatDESTROYED. (I4f8dd, b/142925860)
Version 2.5.0-alpha02
9 février 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha02. Liste des commits de la version 2.5.0-alpha02.
Modifications apportées à l'API
SavedStateHandleetSavedStateViewModelFactoryont été convertis en Kotlin. Cela a amélioré la possibilité de valeur nulle des éléments génériques pour les deux classes. (Ib6ce2, b/216168263, I9647a, b/177667711)- Le paramètre de fonction
LiveDataswitchMappeut désormais avoir une sortie pouvant être une valeur nulle. (I40396, b/132923666) - Les extensions
LiveData-ktx sont désormais annotées avec@CheckResultpour s'assurer que le résultat est utilisé lors de l'appel de ces fonctions. (Ia0f05, b/207325134)
Nouveaux comportements
SavedStateHandlestocke désormais correctement la valeur defaultValue lorsqu'il n'existe aucune valeur pour la clé spécifiée. (I1c6ce, b/178510877)
Correction de bugs
- Dans Lifecycle
2.4.1, nous avons mis à jourlifecycle-processpour qu'il dépende de Startup 1.1.1 afin de garantir que les corrections qui empêchentProcessLifecycleInitializerde générer une exceptionStartupExceptionsoient disponibles par défaut. (Ib01df, b/216490724) - Amélioration du message d'erreur s'affichant lorsque les classes
AndroidViewModelpersonnalisées comportent des paramètres dans le mauvais ordre et tentent de créer unViewModel. (I340f7, b/177667711) - Vous pouvez désormais créer un modèle de vue via
CreationExtrasà l'aide deAndroidViewModelFactorysans définir d'application. (I6ebef, b/217271656)
Version 2.5.0-alpha01
26 janvier 2022
Publication d'androidx.lifecycle:lifecycle-*:2.5.0-alpha01. Liste des commits de la version 2.5.0-alpha01.
CreationExtras pour ViewModel
Avec cette version, nous allons jeter les bases de la restructuration de la manière dont un ViewModel est construit. Au lieu d'un ensemble rigide de sous-classes de ViewModelProvider.Factory, qui ajoutent des fonctionnalités supplémentaires (autorisant un paramètre de constructeur Application via AndroidViewModelFactory, ce qui lance un paramètre de constructeur SavedStateHandle via SavedStateViewModelFactory et AbstractSavedStateViewModelFactory, etc.), nous évoluons vers un monde de fabriques sans état qui s'appuient sur un nouveau concept, CreationExtras. (Ia7343, b/188691010, b/188541057)
Avec cette modification, ViewModelProvider n'effectue plus d'appels directs vers la méthode create(Class<T>) précédente de ViewModelProvider.Factory. Au lieu de cela, l'appel est sur une nouvelle surcharge de create : create(Class<T>, CreationExtras). Cela signifie que toute implémentation directe de l'instance ViewModelProvider.Factory a désormais accès à chacun de ces nouveaux CreationExtras :
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: ceStringfournit un accès à la clé personnalisée que vous avez transmise àViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYpermet d'accéder à la classeApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYpermet d'accéder auSavedStateRegistryOwnerutilisé pour construire ce ViewModel.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYpermet d'accéder auViewModelStoreOwnerutilisé pour construire ce ViewModel.SavedStateHandleSupport.DEFAULT_ARGS_KEYpermet d'accéder auBundledes arguments à utiliser pour construire unSavedStateHandle.
Ces éléments supplémentaires sont fournis par défaut lorsque vous utilisez Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01 et Navigation 2.5.0-alpha01. Si vous utilisez une version antérieure de ces bibliothèques, votre CreationExtras sera vide. Toutes les sous-classes existantes de ViewModelProvider.Factory ont été réécrites pour prendre en charge l'ancien chemin de création utilisé par les versions antérieures de ces bibliothèques ainsi que le chemin CreationExtras qui sera utilisé par la suite.
Ces CreationExtras vous permettent de construire un ViewModelProvider.Factory qui ne transmet que les informations dont vous avez besoin à chaque ViewModel, sans s'appuyer sur une hiérarchie stricte des sous-classes de fabrique :
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
}
}
Nous utilisons la fonction d'extension createSavedStateHandle() en Kotlin sur CreationExtras à partir de SavedStateHandleSupport pour construire un SavedStateHandle uniquement pour le ViewModel qui en a besoin. (Ia6654, b/188541057)
Des CreationExtras personnalisés peuvent être fournis en forçant getDefaultViewModelCreationExtras() sur votre ComponentActivity ou Fragment, ce qui les rend disponibles dans votre ViewModelProvider.Factory personnalisé sous la forme d'une injection assistée. Ces éléments supplémentaires seront automatiquement disponibles pour votre fabrique personnalisée lorsqu'elles seront utilisées directement avec ViewModelProvider ou avec les extensions de propriété Kotlin by viewModels() et by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)
Correction de bugs
- Correction d'un problème qui entraînait la réapparition de la valeur par défaut fournie à un
SavedStateHandleaprès la mort du processus et sa recréation, même si elle était spécifiquement supprimée deSavedStateHandle. Par conséquent,SavedStateHandlene fusionnera plus les valeurs par défaut avec les valeurs restaurées, mais utilisera uniquement les valeurs restaurées comme source fiable. (I53a4b)
Version 2.4
Version 2.4.1
9 février 2022
Publication d'androidx.lifecycle:lifecycle-*:2.4.1. Liste des commits de la version 2.4.1
Correction de bugs
- Rétroportage de Lifecycle
2.5.0-alpha01: correction d'un problème qui entraînait la réapparition de la valeur par défaut fournie à unSavedStateHandleaprès la mort du processus et sa recréation, même si elle était spécifiquement supprimée deSavedStateHandle. Par conséquent,SavedStateHandlene fusionnera plus les valeurs par défaut avec les valeurs restaurées, mais utilisera uniquement les valeurs restaurées comme source fiable. (I53a4b) lifecycle-processdépend désormais d'Androidx Startup 1.1.1, qui a corrigé une régression dans laquelle l'utilisation deProcessLifecycleInitializerentraînait une exceptionStartupException. (b/216490724)
Version 2.4.0
27 octobre 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0. Liste des commits de la version 2.4.0.
Changements importants depuis la version 2.3.0
- Abandon d'
@OnLifecycleEvent. UtilisezLifecycleEventObserverouDefaultLifecycleObserverà la place. - Ajout de la bibliothèque
androidx.lifecycle:lifecycle-viewmodel-compose. Elle fournit un composableviewModel()etLocalViewModelStoreOwner.- Modification destructive pour la source :
ViewModelProvidera été réécrit en Kotlin. La méthodeViewModelProvider.Factory.createn'autorise plus les éléments génériques pouvant être nuls.
- Modification destructive pour la source :
- Des API de coroutines ont été ajoutées à
androidx.lifecycle:lifecycle-runtime-ktx: Lifecycle.repeatOnLifecycle, une API qui exécute un bloc de code dans une coroutine lorsque le cycle de vie est au moins dans un certain état. Le bloc est annulé, puis relancé à mesure que le cycle de vie passe à l'état cible.Flow.flowWithLifecycle, une API qui émet des valeurs à partir du flux en amont lorsque le cycle de vie est au moins dans un certain état.DefaultLifecycleObservera été déplacé delifecycle.lifecycle-common-java8verslifecycle.lifecycle-common.lifecycle.lifecycle-common-java8n'offre plus de fonctionnalités supplémentaires en plus delifecycle.lifecycle-common, sa dépendance peut donc être remplacée parlifecycle.lifecycle-common.- Des API qui ne sont pas des API de coroutines ont été déplacées de
lifecycle-viewmodel-ktxvers le modulelifecycle-viewmodel. lifecycle-processutilise désormaisandroidx.startuppour initialiserProcessLifecycleOwner.Auparavant, cette initialisation était réalisée par
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Si vous utilisiez
tools:node="remove"surContentProviderpour initialiser le cycle de vie des processus par le passé, vous devez maintenant procéder comme suit.<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>(ou)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Version 2.4.0-rc01
29 septembre 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0-rc01 sans aucune modification par rapport à Lifecycle 2.4.0-beta01. Liste des commits de la version 2.4.0-rc01.
Version 2.4.0-beta01
15 septembre 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0-beta01. Liste des commits de la version 2.4.0-beta01
Modifications apportées à l'API
- Abandon d'
@OnLifecycleEvent. UtilisezLifecycleEventObserverouDefaultLifecycleObserverà la place. (I5a8fa) - DefaultLifecycleObserver a été déplacé de
androidx.lifecycle.lifecycle-common-java8versandroidx.lifecycle.lifecycle-common.androidx.lifecycle.lifecycle-common-java8n'offre plus de fonctionnalités supplémentaires en plus deandroidx.lifecycle.lifecycle-common, sa dépendance peut donc être remplacée parandroidx.lifecycle.lifecycle-common. (I021aa) - Des API qui ne sont pas des API de coroutines ont été déplacées de
lifecycle-viewmodel-ktxvers le modulelifecycle-viewmodel. (I6d5b2)
Contribution externe
- Nous remercions dmitrilc pour la correction d'une faute de frappe dans la documentation sur
ViewModel. (#221)
Version 2.4.0-alpha03
4 août 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0-alpha03. Liste des commits de la version 2.4.0-alpha03
Modifications apportées à l'API
- Modification destructive pour la source : ViewModelProvider a été réécrit en Kotlin.
La méthode
ViewModelProvider.Factory.createn'autorise plus les éléments génériques pouvant être nuls. (I9b9f6)
Nouveaux comportements
Lifecycle.repeatOnLifecycle:blockest désormais toujours appelé en série lors de l'exécution répétée. (Ibab33)
Contribution externe
- Merci à chao2zhang d'avoir corrigé les extraits de code dans la documentation sur
repeatOnLifecycle. #205.
Version 2.4.0-alpha02
16 juin 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0-alpha02. Liste des commits de la version 2.4.0-alpha02.
Nouvelles fonctionnalités
- Ajout d'une vérification lint
RepeatOnLifecycleWrongUsagedanslifecycle-runtime-ktx, qui détecte sirepeateOnLifecycleest utilisé de manière incorrecte dansonStart()ouonResume(). (706078, b/187887400)
Modifications apportées à l'API
- L'API
LifecycleOwner.addRepeatingJobest supprimée au profit deLifecycle.repeatOnLifecycle, qui respecte la simultanéité structurée et est plus facile à comprendre. (I4a3a8) ProcessLifecycleInitializera été rendu public afin que d'autresandroidx.startup.Initializerpuissent l'utiliser en tant que dépendances. (I94c31)
Correction de bugs
- Correction d'un problème lié à la vérification lint
NullSafeMutableLiveDatalorsque le champ contenait des modificateurs. (#147, b/183696616) - Correction d'un autre problème lié à la vérification lint
NullSafeMutableLiveDatalors de l'utilisation d'éléments génériques. (#161, b/184830263)
Contribution externe
- Merci à maxsav d'avoir amélioré la vérification lint
NullSafeMutableLiveData. (#147, b/183696616) - Merci à kozaxinan d'avoir amélioré la vérification lint
NullSafeMutableLiveData. (#161, b/184830263)
Version 2.4.0-alpha01
24 mars 2021
Publication d'androidx.lifecycle:lifecycle-*:2.4.0-alpha01. Liste des commits de la version 2.4.0-alpha01.
Nouveaux comportements
lifecycle-processutilise désormaisandroidx.startuppour initialiserProcessLifecycleOwner.Auparavant, cette initialisation était réalisée par
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Si vous utilisiez
tools:node="remove"surContentProviderpour initialiser le cycle de vie des processus par le passé, vous devez maintenant procéder comme suit.<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>(ou)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Modifications apportées à l'API
- Ajout d'une API
Flow.flowWithLifecyclequi émet des valeurs à partir du flux en amont lorsque le cycle de vie est au moins dans un certain état à l'aide de l'APILifecycle.repeatOnLifecycle. Il s'agit d'une alternative à la nouvelle APILifecycleOwner.addRepeatinJob. (I0f4cd)
Correction de bugs
- Pour Lifecycle 2.3.1 : la règle lint
NonNullableMutableLiveDatapeut désormais différencier correctement les variables de champ dont les valeurs pouvant être nulles ne sont pas les mêmes. (b/169249668)
Lifecycle Viewmodel Compose version 1.0.0
Version 1.0.0-alpha07
16 juin 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07.
Modifications destructives de l'API
viewModel()reçoit maintenant désormais unViewModelStoreOwnerfacultatif, ce qui facilite la collaboration avec d'autres propriétaires queLocalViewModelStoreOwner. Par exemple, vous pouvez maintenant utiliserviewModel(navBackStackEntry)pour récupérer un ViewModel associé à un graphique de navigation particulier. (I2628d, b/188693123)
Version 1.0.0-alpha06
2 juin 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06.
Mise à jour pour assurer la compatibilité avec la version 1.0.0-beta08 de Compose.
Version 1.0.0-alpha05
18 mai 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05.
Nouvelles fonctionnalités
- Mise à jour pour assurer la compatibilité avec la version
1.0.0-beta07de Compose.
Correction de bugs
- Prise en charge dans Android 12 des fichiers AndroidManifest provenant de ui-test-manifest et de ui-tooling-data. (I6f9de, b/184718994)
Version 1.0.0-alpha04
7 avril 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04.
Modifications de la dépendance
- Cette version permet à
androidx.hilt:hilt-navigation-composeetandroidx.navigation:navigation-composede synchroniser les dépendances surandroidx.compose.compiler:compiler:1.0.0-beta04etandroidx.compose.runtime:runtime:1.0.0-beta04. Pour la version 1.0.0, le compilateur et l'environnement d'exécution doivent correspondre.
Version 1.0.0-alpha03
10 mars 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03
Modifications apportées à l'API
LocalViewModelStoreOwner.currentaffiche désormais un objetViewModelStoreOwnerpouvant être nul pour mieux déterminer si un objetViewModelStoreOwnerest disponible dans la composition actuelle. Les API qui nécessitent unViewModelStoreOwner, tels queviewModel()etNavHost, génèrent quand même une exception si aucun élémentViewModelStoreOwnern'est défini. (Idf39a)
Lifecycle-Viewmodel-Compose version 1.0.0-alpha02
24 février 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02.
Modifications apportées à l'API
LocalViewModelStoreOwnerdispose désormais d'une fonctionprovidespouvant être utilisée avecCompositionLocalProvider, en remplacement de l'APIasProvidableCompositionLocal(). (I45d24)
Lifecycle-Viewmodel-Compose version 1.0.0-alpha01
10 février 2021
Publication d'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01
Nouvelles fonctionnalités
- Le composable
viewModel()etLocalViewModelStoreOwneront été déplacés deandroidx.compose.ui.viewinteropvers cet artefact dans le packageandroidx.lifecycle.viewmodel.compose. (I7a374)
Version 2.3.1
Lifecycle version 2.3.1
24 mars 2021
Publication d'androidx.lifecycle:lifecycle-*:2.3.1. Liste des commits de la version 2.3.1.
Correction de bugs
- La règle lint
NonNullableMutableLiveDatapeut désormais différencier correctement les variables de champ dont les valeurs pouvant être nulles ne sont pas les mêmes. (b/169249668)
Version 2.3.0
Version 2.3.0
10 février 2021
Publication d'androidx.lifecycle:lifecycle-*:2.3.0. Liste des commits de la version 2.3.0
Principales modifications depuis la version 2.2.0
- Prise en charge de
SavedStateHandleavec les classes non parcelables :SavedStateHandleprend désormais en charge la sérialisation différée, ce qui vous permet d'appelersetSavedStateProvider()pour une clé donnée, en fournissant unSavedStateProviderqui reçoit un rappel àsaveState()lorsqueSavedStateHandleest invité à enregistrer son état. Consultez la section Enregistrer des classes non parcelables. - Application du comportement du cycle de vie :
- LifecycleRegistry applique maintenant
DESTROYEDen tant qu'état final. LifecycleRegistryvérifie maintenant que ses méthodes sont appelées sur le thread principal. Il s'agissait d'une exigence pour les cycles de vie des activités, des fragments, etc. L'ajout d'observateurs provenant de threads autres que le principal générait des plantages difficiles à détecter lors de l'exécution. Pour les objetsLifecycleRegistryappartenant à vos propres composants, vous pouvez désactiver explicitement les vérifications à l'aide deLifecycleRegistry.createUnsafe(...), mais vous devez ensuite vous assurer qu'une synchronisation appropriée est effectuée lorsque vous accédez àLifecycleRegistrydepuis différents threads.
- LifecycleRegistry applique maintenant
- Assistants d'état et d'événement de cycle de vie : ajout de méthodes d'assistance statiques
downFrom(State),downTo(State),upFrom(State)etupTo(State)àLifecycle.Eventpour générer unEventen fonction d'unStateet d'une direction de transition. Ajout de la méthodegetTargetState(), qui fournit leStateauquel le cycle de vie passera directement après unEvent. withStateAtLeast: ajout des APILifecycle.withStateAtLeastqui attendent un état de cycle de vie et exécutent un bloc de code sans suspension de manière synchrone au moment du changement d'état, puis reprennent avec le résultat. Ces API diffèrent des méthodeswhen*existantes, car elles n'autorisent pas l'exécution du code de suspension et n'utilisent pas de coordinateur personnalisé. (aosp/1326081)- API
ViewTree: les nouvelles APIViewTreeLifecycleOwner.get(View)etViewTreeViewModelStoreOwner.get(View)vous permettent respectivement de récupérer lesLifecycleOwneret lesViewModelStoreOwnerassociés à une instanceView. Vous devez passer à Activity1.2.0, Fragment1.3.0et AppCompat 1.3.0-alpha01 ou versions ultérieures pour renseigner ces éléments correctement. Les extensions KotlinfindViewTreeLifecycleOwneretfindViewTreeViewModelStoreOwnersont respectivement disponibles danslifecycle-runtime-ktxetlifecycle-viewmodel-ktx. - Abandon de l'extension Kotlin
LiveData.observe(): l'extension KotlinLiveData.observe()nécessaire pour utiliser la syntaxe lambda est désormais obsolète, car elle n'est plus requise à compter de Kotlin 1.4.
Version 2.3.0-rc01
16 décembre 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-rc01. Liste des commits de la version 2.3.0-rc01
Correction de bugs
- La méthode
keys()deSavedStateHandleest désormais cohérente avant et après l'enregistrement de l'état. Elle inclut désormais les clés déjà utilisées avecsetSavedStateProvider(), en plus de celles utilisées avecset()etgetLiveData(). (aosp/1517919, b/174713653)
Contribution externe
- Les API permettant de suspendre les coroutines prenant en compte le cycle de vie gèrent désormais plus efficacement les appels à
yield(). Merci Nicklas Ansman Giertz ! (aosp/1430830, b/168777346)
Version 2.3.0-beta01
1er octobre 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-beta01. Liste des commits de la version 2.3.0-beta01.
Modifications apportées à l'API
- L'extension Kotlin
LiveData.observe()nécessaire pour utiliser la syntaxe lambda est désormais obsolète, car elle n'est plus requise à compter de Kotlin 1.4. (I40d3f)
Correction de bugs
- Mise à jour d'AndroidX pour utiliser Kotlin 1.4. (Id6471, b/165307851, b/165300826)
Modifications de la documentation
- Le compilateur
liveDataet la documentationasLiveData()ont été mis à jour pour inclure des détails sur la modification des valeurs de délai d'expiration fournies. (aosp/1122324)
Version 2.3.0-alpha07
19 août 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha07. Liste des commits de la version 2.3.0-alpha07.
Correction de bugs
- Correction d'un problème de plantage lié à la vérification lint
NullSafeMutableLiveData. (aosp/1395367)
Version 2.3.0-alpha06
22 juillet 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha06. Liste des commits de la version 2.3.0-alpha06.
Nouvelles fonctionnalités
- Ajout des méthodes d'assistance statiques
downFrom(State),downTo(State),upFrom(State)etupTo(State)àLifecycle.Eventpour générer unEventen fonction d'unStateet d'une direction de transition. Ajout de la méthodegetTargetState(), qui fournit leStateauquel le cycle de vie passera directement après unEvent. (I00887) - Ajout des API
Lifecycle.withStateAtLeastqui attendent un état de cycle de vie et exécutent un bloc de code sans suspension de manière synchrone au moment du changement d'état, puis reprennent avec le résultat. Ces API diffèrent des méthodeswhen*existantes, car elles n'autorisent pas l'exécution du code de suspension et n'utilisent pas de coordinateur personnalisé. (aosp/1326081)
Nouveaux comportements
- LifecycleRegistry applique maintenant
DESTROYEDen tant qu'état final. (I00887) LifecycleRegistryvérifie maintenant que ses méthodes sont appelées sur le thread principal. Il s'agissait d'une exigence pour les cycles de vie des activités, des fragments, etc. L'ajout d'observateurs provenant de threads autres que le principal générait des plantages difficiles à détecter lors de l'exécution. Pour les objetsLifecycleRegistryappartenant à vos propres composants, vous pouvez désactiver explicitement les vérifications à l'aide deLifecycleRegistry.createUnsafe(...), mais vous devez ensuite vous assurer qu'une synchronisation appropriée est effectuée lorsque vous accédez àLifecycleRegistrydepuis différents threads. (Ie7280, b/137392809)
Correction de bugs
- Correction d'un plantage dans
NullSafeMutableLiveData. (b/159987480) - Correction d'un
ObsoleteLintCustomCheckpour les vérifications lint regroupées aveclifecycle-livedata-core-ktx(etNullSafeMutableLiveDataplus précisément). (b/158699265)
Version 2.3.0-alpha05
24 juin 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha05. Liste des commits de la version 2.3.0-alpha05.
Correction de bugs
LiveDatagère désormais plus efficacement les cas réentrants, évitant ainsi les appels en double àonActive()ouonInactive(). (b/157840298)- Les vérifications lint ne s'exécutaient pas avec Android Studio 4.1 Canary 6 ou version ultérieure. Ce problème a été résolu. (aosp/1331903)
Version 2.3.0-alpha04
10 juin 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha04. Liste des commits de la version 2.3.0-alpha04.
Correction de bugs
- Correction d'un problème de plantage lié à la vérification lint
NonNullableMutableLiveData. (b/157294666) - La vérification lint
NonNullableMutableLiveDatacouvre désormais beaucoup plus de cas où une valeurnulla été définie sur unMutableLiveDataavec un paramètre de type non nul. (b/156002218)
Version 2.3.0-alpha03
20 mai 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha03. Liste des commits de la version 2.3.0-alpha03.
Nouvelles fonctionnalités
SavedStateHandleprend désormais en charge la sérialisation différée en vous permettant d'appelersetSavedStateProvider()pour une clé donnée, en fournissant unSavedStateProviderqui reçoit un rappel àsaveState()lorsqueSavedStateHandleest invité à enregistrer son état. (b/155106862)- Une nouvelle API
ViewTreeViewModelStoreOwner.get(View)vous permet de récupérer le conteneurViewModelStoreOwneren fonction d'une instanceView. Vous devez passer à Activity1.2.0-alpha05, Fragment1.3.0-alpha05et AppCompat1.3.0-alpha01pour renseigner ces éléments correctement. Une extension KotlinfindViewModelStoreOwner()a été ajoutée àlifecycle-viewmodel-ktx. (aosp/1295522)
Correction de bugs
- Les vérifications lint de
MutableLiveDatapubliées dans Lifecycle2.3.0-alpha01n'étaient pas publiées avec l'artefactlifecycle-livedata-core-ktx. Ce problème a été résolu. (b/155323109)
Version 2.3.0-alpha02
29 avril 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha02. Liste des commits de la version 2.3.0-alpha02.
Modifications apportées à l'API
SavedStateViewModelFactoryvous permet désormais de transmettre unApplicationnul à son constructeur afin de mieux prendre en charge les cas où cette valeur n'est pas facilement disponible et que la prise en charge pourAndroidViewModeln'est pas nécessaire. (aosp/1285740)
Correction de bugs
- Amélioration des performances de démarrage à froid en évitant l'échec de la validation de la classe sur les appareils utilisant un niveau d'API de 28 ou inférieur. (aosp/1282118)
Version 2.3.0-alpha01
4 mars 2020
Publication d'androidx.lifecycle:lifecycle-*:2.3.0-alpha01. Liste des commits de la version 2.3.0-alpha01
Nouvelles fonctionnalités
- Une nouvelle API
ViewTreeLifecycleOwner.get(View)vous permet de récupérer le conteneurLifecycleOwneren fonction d'une instanceView. Vous devez passer à Activity1.2.0-alpha01et Fragment1.3.0-alpha01pour renseigner ces éléments correctement. Une extension KotlinfindViewTreeLifecycleOwnerest également disponible danslifecycle-runtime-ktx. (aosp/1182361, aosp/1182956) - Ajout d'une vérification lint qui vous avertit lorsque vous définissez une valeur
nullsurMutableLiveDataet que celui-ci est défini en Kotlin comme n'ayant pas une valeur nulle. Cette option est disponible lorsque vous utilisez les artefactslivedata-core-ktxoulivedata-ktx. (aosp/1154723, aosp/1159092) - Un nouvel artefact
lifecycle-runtime-testingest disponible. Il fournitTestLifecycleOwner, qui implémenteLifecycleOwneret fournit unLifecyclemodifiable thread-safe. (aosp/1242438)
Correction de bugs
- L'artefact
lifecycle-runtimepossède désormais un nom de package unique. (aosp/1187196)
Version 2.2.0
ViewModel-Savedstate version 2.2.0
5 février 2020
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0. Liste des commits de la version 2.2.0.
Lifecycle ViewModel SavedState partage désormais la même version que les autres artefacts Lifecycle. Le comportement de la version 2.2.0 est identique à celui de 1.0.0.
Version 2.2.0
22 janvier 2020
Publication d'androidx.lifecycle:lifecycle-*:2.2.0. Liste des commits de la version 2.2.0.
Changements importants depuis la version 2.1.0
- Intégration de la coroutine Lifecycle : le nouvel artefact
lifecycle-runtime-ktxajoute l'intégration entre les coroutines Lifecycle et Kotlin.lifecycle-livedata-ktxa également été développé pour exploiter les coroutines. Pour en savoir plus, consultez la section Utiliser des coroutines Kotlin avec des composants d'architecture. - Abandon de
ViewModelProviders.of():ViewModelProviders.of()est maintenant obsolète. Vous pouvez transmettre unFragmentou unFragmentActivityau nouveau constructeurViewModelProvider(ViewModelStoreOwner)pour obtenir la même fonctionnalité que lorsque vous utilisez Fragment1.2.0. - Abandon de l'artefact
lifecycle-extensions: avec l'abandon deViewModelProviders.of()ci-dessus, cette version marque l'abandon de la dernière API danslifecycle-extensions. Cet artefact doit maintenant être considéré comme obsolète dans son intégralité. Nous vous recommandons vivement d'utiliser les artefacts Lifecycle dont vous avez besoin (par exemple,lifecycle-servicesi vous utilisezLifecycleServiceetlifecycle-processsi vous utilisezProcessLifecycleOwner) plutôt quelifecycle-extensions, car il n'y aura pas de version2.3.0delifecycle-extensions. - Processeur d'annotations incrémentiel Gradle : le processeur d'annotations de Lifecycle est incrémentiel par défaut.
Si votre application est écrite dans le langage de programmation Java 8, vous pouvez utiliser
DefautLifecycleObserverà la place. Si elle est écrite en Java 7, vous pouvez utiliserLifecycleEventObserver.
Version 2.2.0-rc03
4 décembre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-rc03. Liste des commits de la version 2.2.0-rc03
Correction de bugs
- Correction d'une erreur survenant lorsqu'une simulation de
ViewModelétait stockée dansViewModelStore, puis interrogée avec la fabrique par défaut. - Correction de l'utilisation de
Dispatchers.Main.immediatedanslaunchWhenCreatedet d'autres méthodes similaires pour qu'elles soient appelées de manière synchrone lors de l'événement de cycle de vie correspondant. (aosp/1156203)
Contributions externes
- Merci à Anders Järleberg pour sa contribution à cette correction ! (aosp/1156203)
- Merci à Vsevolod Tolstopyatov de JetBrains pour avoir vérifié l'implémentation d'une exécution intégrée.
Modifications de la dépendance
- Lifecycle Extensions dépend désormais de Fragment
1.2.0-rc03.
Version 2.2.0-rc02
7 novembre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-rc02. Liste des commits de la version 2.2.0-rc02.
Correction de bugs
- Correction d'un bug dans la configuration ProGuard de la bibliothèque qui affectait les appareils reposant sur l'API 28 ou version ultérieure si l'API cible est inférieure à 29. (b/142778206)
Version 2.2.0-rc01
23 octobre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-rc01. Liste des commits de la version 2.2.0-rc01.
Correction de bugs
launchWhenCreatedet les méthodes associées s'exécutaient une image plus tard que la méthode de cycle de vie associée en raison de l'utilisation deDispatchers.Mainau lieu deDispatchers.Main.immediate. Ce problème a été résolu. (aosp/1145596)
Contributions externes
- Merci à Nicklas Ansman pour sa contribution à cette correction ! (aosp/1145596)
Version 2.2.0-beta01
9 octobre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-beta01. Liste des commits de la version 2.2.0-beta01.
Correction de bugs
- Correction d'une régression introduite dans Lifecycle 2.2.0-alpha05 dans l'ordre de
ProcessLifecycleOwneret dans la modification de l'activitéLifecycleOwner(passage à débuté et repris) sur les appareils Android 10. (aosp/1128132) - Correction d'une régression introduite dans Lifecycle
2.2.0-alpha05qui entraînait une exceptionNullPointerExceptionlors de l'utilisation de la version2.0.0ou2.1.0delifecycle-process. (b/141536990)
Version 2.2.0-alpha05
18 septembre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-alpha05. Liste des commits de la version 2.2.0-alpha05.
Correction de bugs
- Correction d'une condition de concurrence dans le générateur de données en direct de coroutine. b/140249349
Version 2.2.0-alpha04
5 septembre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-alpha04. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScopeet l'implémentation sous-jacente deliveDatautilisent désormaisDispatchers.Main.immediateau lieu deDispatchers.Main. (b/139740492)
Contributions externes
- Merci à Nicklas Ansman pour sa contribution au passage à
Dispatchers.Main.immediate! (aosp/1106073)
Version 2.2.0-alpha03
7 août 2019
Publication d'androidx.lifecycle:lifecycle-*:2.2.0-alpha03. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Les implémentations de
ViewModelStoreOwnerpeuvent désormais implémenterHasDefaultViewModelProviderFactorypour fournir unViewModelProvider.Factorypar défaut. Cette option est facultative. Cette option est disponible pour Activity1.1.0-alpha02, Fragment1.2.0-alpha02et Navigation2.2.0-alpha01. (aosp/1092370, b/135716331)
Modifications apportées à l'API
ViewModelProviders.of()est maintenant obsolète. Vous pouvez transmettre unFragmentou unFragmentActivityau nouveau constructeurViewModelProvider(ViewModelStoreOwner)pour obtenir le même résultat. (aosp/1009889)
Version 2.2.0-alpha02
2 juillet 2019
Publication d'androidx.lifecycle:*:2.2.0-alpha02. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications apportées à l'API
- Remplacement de
LiveDataScope.initialValueparLiveDataScope.latestValue, qui permet de suivre la valeur émise actuellement pour le blocliveData. - Ajout d'une nouvelle surcharge au compilateur
liveData, qui reçoit le paramètretimeoutde typeDuration.
Version 2.2.0-alpha01
7 mai 2019
Publication d'androidx.lifecycle:*:2.2.0-alpha01. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Cette version propose de nouvelles fonctionnalités afin de prendre en charge les coroutines Kotlin pour Lifecycle et LiveData. Pour en savoir plus, consultez la documentation détaillée ici.
ViewModel-SavedState version 1.0.0
Version 1.0.0
22 janvier 2020
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0. Liste des commits de la version 1.0.0.
Fonctionnalités importantes de la version 1.0.0
- La classe SavedStateHandle a été ajoutée. Elle permet à vos classes
ViewModeld'accéder à l'état enregistré et d'y apporter une contribution. Cet objet peut être reçu dans le constructeur de la classeViewModelet les fabriques fournies par défaut par Fragments. AppCompatActivity injectera automatiquementSavedStateHandle. - AbstractSavedStateViewModelFactory a été ajouté. Cet élément permet de créer des fabriques personnalisées pour votre
ViewModelet de lui donner accès àSavedStateHandle.
ViewModel-Savedstate version 1.0.0-rc03
4 décembre 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03. Liste des commits de la version 1.0.0-rc03.
Modifications de la dépendance
- Lifecycle ViewModel SavedState dépend désormais de Lifecycle
2.2.0-rc03.
Viewmodel-Savedstate version 1.0.0-rc02
7 novembre 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02
Modifications de la dépendance
- Dépend désormais de Lifecycle
2.2.0-rc02.
ViewModel-SavedState version 1.0.0-rc01
23 octobre 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 sans aucune modification par rapport à la version 1.0.0-beta01. Liste des commits de la version 1.0.0-rc01.
ViewModel-Savedstate version 1.0.0-beta01
9 octobre 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01
Correction de bugs
- Correction d'un problème qui provoquait une exception
IllegalStateExceptionlorsque vous accédiez pour la première fois à un SavedState ViewModel dansActivity.onActivityResult(). (b/139093676) - Correction d'une exception
IllegalStateExceptionlors de l'utilisation deAbstractSavedStateViewModelFactory. (b/141225984)
ViewModel-SavedState version 1.0.0-alpha05
18 septembre 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05.
Modifications apportées à l'API
SavedStateViewModelFactoryn'étend plusAbstractSavedStateViewModelFactory, etSavedStateHandlen'est créé que pour les ViewModels qui en font la demande. (aosp/1113593)
ViewModel-SavedState version 1.0.0-alpha03
7 août 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications destructives
lifecycle-viewmodel-savedstatene dépend plus defragment, et les constructeursSavedStateViewModelFactory(Fragment)etSavedStateViewModelFactory(FragmentActivity)associés ont été supprimés. À la place,SavedStateViewModelFactoryest désormais la fabrique par défaut pour Activity1.1.0-alpha02,Fragment1.2.0-alpha02et Navigation2.2.0-alpha01. (b/135716331)
ViewModel-SavedState version 1.0.0-alpha02
2 juillet 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Ajout d'une surcharge
SavedStateHandle.getLiveData()qui accepte une valeur par défaut.
Modifications apportées à l'API
SavedStateVMFactorya été renomméSavedStateViewModelFactory.AbstractSavedStateVMFactorya été renomméAbstractSavedStateViewModelFactory.
ViewModel-Savedstate version 1.0.0-alpha01
13 mars 2019
Publication d'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. Le journal de commits complet de cette version initiale est disponible sur cette page.
Nouvelles fonctionnalités
ViewModelspeut désormais contribuer à l'état enregistré. Pour ce faire, utilisez la nouvelle fabrique de ViewModelSavedStateVMFactory. Votre ViewModel doit avoir un constructeur qui reçoit l'objetSavedStateHandleen tant que paramètre.
Version 2.1.0
Changements importants depuis la version 2.0.0
- Ajout de
LifecycleEventObserverpour les cas où un flux d'événements de cycle de vie est nécessaire. Il s'agit d'une API publique au lieu d'une classeGenericLifecycleObservermasquée. - Ajout des extensions KTX pour les méthodes
LiveData.observeetTransformations.*. - Ajout de
Transformations.distinctUntilChanged, qui crée un objet LiveData qui n'émet pas de valeur tant que la valeurLiveDatasource n'a pas été modifiée. - Ajout de la prise en charge des coroutines dans les ViewModels en ajoutant la propriété d'extension
ViewModel.viewModelScope.
Version 2.1.0
5 septembre 2019
Publication d'androidx.lifecycle:lifecycle-*:2.1.0. Les commits inclus dans cette version sont disponibles sur cette page.
Version 2.1.0-rc01
2 juillet 2019
Publication d'androidx.lifecycle:*:2.1.0-rc01 sans aucune modification par rapport à la version androidx.lifecycle:*:2.1.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.
Version 2.1.0-beta01
7 mai 2019
Publication d'androidx.lifecycle:*:2.1.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Les cycles de vie passent en version bêta. L'API a été introduite dans les versions alpha précédentes, telles que les fonctions d'extension
liveDatapour les transformations et les observations, l'initialisation deViewModelavec délégation de propriété et d'autres éléments sont stabilisés et ne seront plus modifiés.
Version 2.1.0-alpha04
3 avril 2019
Publication d'androidx.lifecycle:*:2.1.0-alpha04. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications apportées à l'API
- Modification destructive : l'API sous-jacente de
by viewModels()et deby activityViewModels()a été modifiée pour prendre en chargeViewModelStoredirectement, au lieu d'utiliser simplementViewModelStoreOwner. (aosp/932932)
Version 2.1.0-alpha03
13 mars 2019
Publication d'androidx.lifecycle:*:2.1.0-alpha03. La liste complète des commits inclus dans cette version est disponible sur cette page.
Modifications apportées à l'API
ViewModelProvider.KeyedFactorya été supprimé. La deuxième interface, en plus deViewModelProvider.Factory, n'était pas adaptée aux nouvelles fonctionnalités de délégation de propriété en Kotlinby viewmodels {}. (aosp/914133)
Version 2.1.0-alpha02
30 janvier 2019
Publication d'androidx.lifecycle 2.1.0-alpha02.
Modifications apportées à l'API
LifecycleRegistrycontient désormais une méthodesetCurrentState()qui remplace la méthodesetState(), désormais obsolète. (aosp/880715)
Correction de bugs
- Correction d'un problème qui entraînait le plantage des instances fictives
ViewModellorsque le conteneurViewModelStoreétait effacé. b/122273087
Version 2.1.0-alpha01
17 décembre 2018
Publication d'androidx.lifecycle 2.1.0-alpha01.
Nouvelles fonctionnalités
- Ajout de
LifecycleEventObserverpour les cas où un flux d'événements de cycle de vie est nécessaire. Il s'agit d'une API publique au lieu d'une classeGenericLifecycleObservermasquée. - Ajout des extensions KTX pour les méthodes
LiveData.observeetTransformations.*. - Ajout de la méthode
Transformations.distinctUntilChanged. Elle crée un objetLiveDataqui n'émet aucune valeur tant que la valeur LiveData source n'a pas été modifiée. - Prise en charge des coroutines dans les ViewModels : la propriété d'extension
ViewModel.viewModelScopea été ajoutée. - Ajout de
ViewModelProvider.KeyedFactory, une fabrique de ViewModels qui reçoitkeyetClassdans la méthodecreate.
Version 2.0.0
Version 2.0.0
21 septembre 2018
Publication de Lifecycle 2.0.0 avec une correction de bug de la version 2.0.0-rc01 dans ViewModel
Correction de bugs
- Correction d'une règle ProGuard de ViewModel supprimant incorrectement des constructeurs. b/112230489
Version 2.0.0-beta01
2 juillet 2018
Correction de bugs
- Correction d'une règle ProGuard de LifecycleObserver pour ne conserver que les implémentations, et non les sous-interfaces. b/71389427
- Correction des règles ProGuard de ViewModel pour permettre l'obscurcissement et la minification.
Versions antérieures à AndroidX
Pour les versions de Lifecycle antérieures à AndroidX ci-dessous, incluez les dépendances suivantes :
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"
}
Version 1.1.1
21 mars 2018
Un seul petit changement : android.arch.core.util.Function est déplacée de arch:runtime vers arch:common. Cela permet de l'utiliser sans dépendance d'exécution, par exemple dans paging:common ci-dessous.
lifecycle:common est une dépendance de lifecycle:runtime. Par conséquent, ce changement n'affecte pas lifecycle:runtime directement, uniquement les modules qui dépendent directement de lifecycle:common, comme Paging.
Version 1.1.0
22 janvier 2018
Modifications du packaging
De nouvelles dépendances bien plus petites sont désormais disponibles :
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
Modifications apportées à l'API
- Les
LifecycleActivityetLifecycleFragmentobsolètes ont été supprimés. Veuillez utiliserFragmentActivityouAppCompatActivity, ou assurez-vous queFragmentest compatible. - Ajout des annotations
@NonNullàViewModelProvidersetViewModelStores. - Abandon du constructeur
ViewModelProviders. Veuillez utiliser ses méthodes statiques directement. - Abandon de
ViewModelProviders.DefaultFactory. Veuillez utiliserViewModelProvider.AndroidViewModelFactory. - Ajout de la méthode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)statique pour récupérer uneFactorystatique adaptée à la création d'instancesViewModeletAndroidViewModel.