Sobes.tech
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() et onRestoreInstanceState().
  • 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). ViewModel existe jusqu'à la destruction du ViewModelStoreOwner.
    // 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 de ViewModel.
    // 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