2012-12-18 1 views
1

J'ai une classe d'activité simple avec une méthode onCreate() qui définit un champ booléen privé si toutes les tâches d'initialisation réussissent. J'ai lu la valeur de ce booléen dans d'autres parties de la classe.Est-il nécessaire de surcharger onSaveInstanceState pour enregistrer les champs privés?

public class MyActivity extends Activity 
{ 
    private boolean initializationSucceeded; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     ... 

     //if everything succeeded... 
     initializationSucceeded = true; 
    } 
} 

Est-il nécessaire de passer outre onSaveInstanceState() pour enregistrer l'état de ce booléen, ou est-ce que j'ai bien? J'ai bien peur de ne pas savoir ce qui arrive aux membres du domaine privé pendant toutes ces affaires, alors j'espère que quelqu'un pourra m'expliquer. Merci.

Répondre

1

pas besoin de le sauvegarder, car à chaque fois que onCreate est appelé et que les initialisations réussies sont vraies. OnCreate est la première chose appelée après les événements de cycle de vie comme les rotations. Sauf si vous avez un thread qui est démarré dans onCreate qui nécessite la valeur de vérité de initialasucceeded alors vous devriez être bien.

+0

Oui. Juste pour développer cette réponse (puisque je comprends mieux le cycle de vie de l'activité maintenant), il suffit de sauvegarder l'état des membres qui ont le potentiel de se changer après 'onCreate()' par exemple. un champ privé qui peut être modifié via un getter public. Si votre membre a toujours la même valeur dans 'onCreate()' et ne peut jamais être modifié par la suite, il n'est pas nécessaire de sauvegarder son état, car il n'aura jamais de valeur "dynamique". –

+0

À peu près oui. Vous avez seulement besoin de sauvegarder l'état des variables qui sont manipulées, en particulier celles de l'utilisateur. – dannyRods

Questions connexes