Junior
Comment pouvons-nous stocker temporairement un objet dans Android?
sobes.tech IA
Réponse de l'IA
Il est possible de sauvegarder temporairement un objet dans Android de plusieurs manières, le choix dépend de sa durée de vie et de la nécessité d'y accéder après la fin du composant :
- État de la Vue : Les objets liés à la Vue peuvent être sauvegardés dans son état, qui est restauré lors de la recréation de la Vue (par exemple, lors de la rotation de l'écran). Utilisez
onSaveInstanceState()etonRestoreInstanceState(). ViewModel: La meilleure méthode pour sauvegarder des données liées à l'UI qui doivent survivre aux changements de configuration de l'Activité/Fragment (par exemple, rotations d'écran).ViewModelexiste jusqu'à la destruction duViewModelStoreOwner.// Dans l'Activité/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // Dans le ViewModel class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(obsolète) : Méthode dans l'Activité pour sauvegarder des objets arbitraires qui survivront à un changement de configuration.getLastNonConfigurationInstance()est utilisé pour obtenir l'objet. Obsolète au profit deViewModel.// Dans l'Activité override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Récupération de l'objet val retainedObject = lastCustomNonConfigurationInstance as? MyData- Classe
Application: Pour les objets qui doivent vivre pendant tout le cycle de vie de l'application. Doit être utilisé avec précaution pour ne pas stocker trop de données. - Fichiers temporaires : Pour des objets plus volumineux qui ne tiennent pas directement en mémoire ou nécessitent une sauvegarde à court terme sur disque.
| Méthode | Durée de vie | Utilisation |
|---|---|---|
| État de la Vue | Vie de la Vue + changements | Petits données liées à la Vue |
| ViewModel | Vie de l'Activité/Fragment | Données UI survivant aux changements de configuration |
| onRetainCustomNonConfigurationInstance() | Vie de l'Activité + changements | Objets arbitraires (obsolète) |
Classe Application |
Vie de l'application | Objets globaux |
| Fichiers temporaires | Définis par le développeur | Objets volumineux, stockage temporaire |