IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Précisions cycle de vie application


Sujet :

Android

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Précisions cycle de vie application
    Bonjour,

    j'ai une appli très simple dont le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public class pageOK extends Activity {
     
    	private static String value = null;
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    	    super.onCreate(savedInstanceState);
     
    	    Bundle extras = getIntent().getExtras(); 
     
    	    if (extras != null) {
    	       value = extras.getString("TEXT_USER");
    	    }
     
    	    if(value.length()==0){
    			value = "Vous n'avez écrit aucun texte";
    	    } 
     
    	    setContentView(R.layout.pageok);
     
    	    final TextView TW1 = (TextView) findViewById(R.id.textView1);
    	    TW1.setText(value);
     
    	    final CheckBox CB1 = (CheckBox) findViewById(R.id.checkBox1);
     
    	    CB1.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				finish();
    			}
    		});
     
    	    // TODO Auto-generated method stub
    	}
     
     
        @Override
        public void onResume(){
        	super.onResume();
        	final TextView TW1 = (TextView) findViewById(R.id.textView1);
    	    TW1.setText(value);
        }
     
        @Override
        public void onPause(){
        	super.onPause();
        }
    }
    Alors voila, j'affiche une valeur string passé en argument de l'activité précedente. La valeur s'affiche sans pb. Ce que je ne comprends pas, c'est quand je clique sur le bouton home du telephone, et que je reviens dans l'appli, (on passe donc pas le onresume seulement), je lui demande de me ré afficher dans la textview la valeur du string "value". Et cette valeur est conservée.
    Je me pose donc la question de l'utilité des fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void OnSaveInstanceState(Bundle savedInstanceState)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void onRestoreInstanceState(bundle ....)
    Ces deux fonctions sont censés être utilisées pour conserver les données lorsque l'appli passe en arriere plan. Quel est l'interet si toutes les données sont déja conservée ?
    Je pensais que l'appli ne mafficherait rien dans ma textview en passant par onResume, car "value" obtiens sa valeur seulement dans le onCreate(), et est null à l'initialisation..
    Voila si vous pouvez m'éclairer ce n'est pas de refus
    Bonne journée

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    C'est utile si tu définit une valeur aléatoire, cela évite de regénérer une valeur à chaque fois que l'activité revient au premier plan ou bien si tu demande des données à l'utilisateur pour ne pas avoir à tout recommencer.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Je n'arrive toujours pas a voir quand c'est utile et pourquoi la valeur de "value" est conservée.

    Autre exemple avec un EditText:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textMultiLine" >
        </EditText>
    J'entre un texte. Je clique sur le bouton Home pour sortir de lapplication. Je reviens dans l'appli, le texte présent dans l'EditText est toujours la. Donc dans quel cas ca va éviter à l'utilisateur de tout recommencer ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Points : 177
    Points
    177
    Par défaut
    C'est marqué dans la doc : http://developer.android.com/referen...d.os.Bundle%29

    C'est quand le système devient low en resource. L'appli est persisté.

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Très bien merci

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Un manière simple de simuler une re-création complète de l'activité est de tourner le téléphone (si celle-ci n'est pas forcée dans une orientation spécifique ou déclare un code spécifique pour la gestion de l'orientation).

    Sinon, le onSaveInstanceState / onRestoreInstanceState est appelé après que le système ait déjà remplit quelques trucs.
    Notamment, l'état des Views. Ce qui permet à un TextEdit de conserver son contenu après une rotation, même si aucun code n'est là pour sauver son état ou non.

    onSaveInstanceState / onRestoreInstanceState n'est donc utile que si une donnée est perdue, et doit être conservée impérativement entre une destruction / reconstruction. Ce qui est assez rare.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer le cycle de vie d'une application PHP avec Phing
    Par Phelim dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 24/03/2012, 17h50
  2. Réponses: 0
    Dernier message: 19/04/2011, 10h56
  3. Cycle de vie d'une application et celui d'une Activity
    Par androidisme dans le forum Android
    Réponses: 4
    Dernier message: 04/09/2010, 21h51
  4. Réponses: 0
    Dernier message: 04/02/2010, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo