Comment Android implémente-t-il le mécanisme de sauvegarde de l'état de ViewModel lors des changements de configuration ou dans le cycle de vie?
sobes.tech IA
Réponse de l'IA
En Android, ViewModel est conçu pour stocker et gérer les données de l'interface utilisateur en tenant compte du cycle de vie. Lors de changements de configuration (par exemple, la rotation de l'écran), le système détruit l'Activity ou le Fragment, mais le ViewModel est conservé et réattribué aux nouvelles instances.
Cela est réalisé via ViewModelProvider, qui lie le ViewModel au cycle de vie du composant. Le ViewModel reste en mémoire tant qu'il est lié au cycle de vie du propriétaire (Activity/Fragment). Lorsqu'un composant est détruit en raison d'un changement de configuration, le ViewModel n'est pas détruit, mais réutilisé dans une nouvelle instance.
Pour sauvegarder l'état à l'intérieur du ViewModel, on peut utiliser SavedStateHandle, un objet spécial qui permet de sauvegarder et restaurer des données en cas de destruction du processus ou d'autres situations dépassant un simple changement de configuration.
Exemple d'utilisation de SavedStateHandle:
class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
var counter: Int
get() = state.get<Int>("counter") ?: 0
set(value) = state.set("counter", value)
}
Ainsi, le ViewModel conserve les données en mémoire lors des changements de configuration, et SavedStateHandle aide à préserver l'état lors d'événements plus graves, comme la destruction du processus.