J'ai une variable que j'ai sauvegardée et restaurée avec succès avec 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 surchargeant la méthode onPause () et en revenant lorsque l'activité n'est plus en pause. Toute idée sur la manière de procéder est grandement appréciée.
Comme vous l'avez découvert, onSaveInstanceState
n'est utile que dans les cas où vous devez recréer la même "instance" de l'activité après sa destruction par le système d'exploitation, généralement parce qu'elle est trop éloignée pour rester en vie sous pression de la mémoire.
L'enregistrement de vos données dans onPause
est en effet la solution idéale pour une persistance qui va au-delà d'une exécution unique de votre Activité. Pour que cela fonctionne, vous avez plusieurs options, notamment:
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
Vous pouvez simplement affecter votre variable foo
au membre du groupe mFoo
dans onPause
à condition de sauvegarder également mFoo
dans le lot d'états 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 extraire 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 de mon annotation @GNState. C'est simple à utiliser. D'autres états d'objet de classe singleton peuvent également être enregistrés. Voir ici pour les informations de configuration et d'utilisation: https://github.com/noxiouswinter/gnlib_Android/wiki/gnstatemanager