Sauvegarde de l'état de l'activité dans l'antenne
Question
J'ai une variable que j'ai sauvegardée avec succès et restaurée à l'aide de OnsaveInstancestate
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); // the UI component values are saved here.
outState.putDouble("VALUE", liter);
Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}
Mais cela ne fonctionne que si l'activité est détruite.Je souhaite enregistrer la même variable en remplaçant la méthode onpaause () et de récupérer lorsque l'activité n'est plus suspendue des idées sur la manière de faire cela est grandement apprécié
La solution
Comme vous l'avez découvert, onSaveInstanceState
n'est utile que dans des situations où vous devez recréer la même "instance" de l'activité après avoir été détruit par le système d'exploitation, généralement parce qu'il est trop loin dans la pile arrière àRestez en vie sous pression de mémoire.
Enregistrement de vos données dans onPause
est en effet la voie à suivre pour la persistance qui dure au-delà d'une seule exécution de votre activité.Pour obtenir ce travail, vous avez plusieurs options, notamment:
- Préférences partagées
- Fichiers
- Bases de données
- Fournisseurs de contenu
Je suggère de lire cette documentation pour en savoir plus sur chacune de ces options:
http://developer.android.com/guide/topics/data/data-storage.html
Autres conseils
Vous pouvez simplement assigner votre variable foo
au membre de classe mFoo
dans onPause
à condition que vous sauvegardiez également mFoo
dans le bundle d'état dans onSaveInstanceState
.Il en va de même pour le scénario de restauration.
Si vous choisissez d'enregistrer l'état d'activité dans les préférences partagées, vous pouvez consulter le composant GNStateManager de la bibliothèque que j'ai écrite pour faciliter le stockage et la récupération des champs obligatoires de l'activité marqués mon annotation @GNState.Il est très simple à utiliser.D'autres états d'objet de classe singleton peuvent également être enregistrés.Cliquez ici pour obtenir des informations sur la configuration et l'utilisation: https://github.com/noxiouswinter/gnlib_android/wiki/gnstatemanager