web-dev-qa-db-fra.com

Enregistrement de l’activité dans onPause

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.

17
Waggoner_Keith

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:

  • Préférences partagées
  • Des dossiers
  • 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

35
lyricsboy

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.

4
Hamid Fadishei

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

0
jinais