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 :

Questions sur le cycle de vie d'une activité


Sujet :

Android

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Par défaut Questions sur le cycle de vie d'une activité
    Je pense avoir compris le cycle de vie d'une activité, ou du moins à quel moment s'exécutent les différentes méthodes. Cependant, je n'arrive pas à trouver des cas pratiques concrets où les différentes méthodes sont utiles. En gros, que doit-on faire dans quelle méthode? Je me permets donc d'exposer mes différentes questions ici


    1. Le "onCreate()", je pense que j'ai compris. C'est là-dedans qu'on crée et qu'on "dessine" notre activité.
    ==> donc, on fait le "setContentView(...)"
    ==> on peut aussi y associer des objets à leur correspondance XML. Par exemple, tv=(TextView)findViewById(R.id.tv), avec TextView tv déclaré en "global" à la classe de manière "private".

    2. La méthode "onStart()" est appelée quand on a fait passer en avant-plan une autre application, puis qu'on revient sur sa 1ère application.
    ==> Que peut-on trouver dedans? Un rafraîchissement des infos à l'écran par exemple? Imaginons une application qui affiche des commandes de produits. En retournant dans le "onRestart()", je peux alors vérifier si de nouveaux produits ont été commandés entre temps (entre le moment où j'ai affiché une autre app et le moment où je suis revenu sur la 1ère app) et afficher la nouvelle liste? Je ne sais pas si mon exemple est bien clair ou bien adapté au "onStart()"...
    ==> Qu'en est-il du "onRestart()"? J'ai lu quelque part que "onRestart()" est appelé quand on change l'orientation de l'écran? Et dans un autre tuto, j'ai lu que c'est le "onCreate()" qui est appelé quand on change l'orientation. Qu'en est-il réellement?

    3. Même question pour un "onResume()"
    ==> Je ne vois pas trop en quoi cette méthode est utile. Elle est donc appelée quand je reviens sur mon application, après qu'une notification qui ne prenait pas tout l'écran a été affichée? Un coup de fil par exemple, c'est bien ça?
    ==> En fait, j'ai même lu dans un tuto que les méthodes "onStart()", "onRestart()" et "onResume()" n'ont pas grand intérêt. Mais ça ne me dit pas grand chose. Si elles existent, c'est qu'il y a une raison.

    4. Pour les fonctions "onPause()", "onStop()" et "onDestroy()", quel genre d'instructions peut-on trouver dedans? Je ne vois pas l'intérêt de ces fonctions. Souvent, je lis qu'elles sont utiles pour sauvegarder des données. Mais quel genre de données?


    Désolé pour la longueur. J'aurais pu encore fait plus long, mais je me suis abstenu

  2. #2
    Membre éprouvé
    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
    Par défaut
    Il y a plein de cas d'usages mais ça dépend de ton applicatif aussi.

    Par exemple si tu utilises les capteurs pour déplacer quelque chose à l'écran c'est une bonne pratique d'enregistrer et de des-enregistrer les listeners dans onResume() et onPause().

    De cette façon tu préserves la batterie quand l'utilisateur switch d'activité ou si il éteint l'écran.

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Je t'enjoins à lire la page et la documentation officielle, ainsi que se baser sur ce schéma :

    Source : Documentation Android

    onCreate => Celle-ci, tu l'as bien compris. Cette méthode crée l'Activity/le Fragment (c'est grosso-modo interchangeable dans notre contexte), débute l'initialisation de son contexte, etc...

    onStart => Celle-ci est appelée (suite à la méthode onCreate) OU (directement losqu'on revient de l'arrière-plan ET que l'activité n'a pas été détruite par le système pour libération de place des applications en background) OU (suite à onRestart). Elle va servir à binder les services, par exemple.

    onResume => Celle-ci est appelée (suite à la méthode onStart) OU (au retour sur cette Activity/Fragment lors d'une navigation standard au sein de l'application). Elle va servir à MaJ les données & l'interface, lancer des requêtes... par exemple.

    onPause => Cette méthode est appelée lorsque l'Activity quitte l'écran principal et n'est pas détruite. Le cas typique est de passer d'une Activity 1 à une Activity B. A passera dans onPause et n'ira pas plus loin car encore dans la pile et "fraîche".
    Ici, on va sauvegarder du contexte, des infos basiques... Bref, le miroir de "onResume".

    onStop => Elle est appelée lorsque l'Activity n'est plus "vivante" mais peut être accédée. Un cas exemple serait lorsque l'on navigue dans l'application et que l'on change de hiérarchie de vue. Elle est le miroir de onStart.

    onDestroy => Elle est appelée lorsque l'Activity va être détruite, soit car elle ne doit plus exister (appui sur le bouton "back"), soit parce qu'elle est supprimée (pression mémoire, par exemple). Elle est le miroir de onCreate. On va libérer des Service bindés, par exemple, qui auraient été conservés pour continuer la MaJ des données et de l'UI au plus près de l'actuel.

    Pour la rotation, l'Activity est totalement détruite, puis totalement reconstruite.
    Je t'enjoins la lecture de cette partie pour plus d'information sur la sauvegarde et la restauration du contexte (qui est aussi utile dans le cas des destructions "simples").

    Je pense avoir fait le tour.
    Mes excuses pour le délai de réponse.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Par défaut
    Merci pour les réponses :-) Après différents tests, j'y vois beaucoup plus clair et j'ai réussi à manipuler le Bundle pour sauvegarder les données. Ce n'est pas particulièrement compliqué en fait

    Il me reste encore une petite zone d'ombre. Je ne comprends pas vraiment quand est exécuté le "onPause()". La méthode "onStop()", j'ai pu la tester, est exécutée quand je fais passer une toute autre application en avant-plan. Par contre, je n'arrive pas à comprendre le "onPause()". Quoique... en écrivant ce message, une idée me vient à l'esprit. Tilt! Est-ce que, par hasard, le "onPause()" ne serait pas exécuté quand on passe sur une autre activité de la même application? Donc, on reste sur la même application, mais un autre écran s'affiche, hop le "onPause()" s'exécuterait? Je ne peux pas tester cela tout de suite. Mais je regarde si c'est bien cela quand je rentre chez moi

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Comme indiqué, onPause est exécutée dès que l'Activity (respectivement le Fragment) est passé en arrière-plan, quelle que soit la raison.
    Elle est exécutée avant onStop.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Par défaut
    Merci pour la réponse

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 01/03/2015, 22h49
  2. Réponses: 3
    Dernier message: 01/06/2011, 11h04
  3. question sur cycle de vie d'une activity
    Par lansher1985 dans le forum Android
    Réponses: 1
    Dernier message: 22/07/2010, 11h08
  4. Réponses: 7
    Dernier message: 08/03/2007, 09h23
  5. Question sur exports et les classes (pour une dll)
    Par DjPoke dans le forum Langage
    Réponses: 7
    Dernier message: 08/08/2005, 19h25

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