Comment puis-je savoir que OnResume vient après onCreate?

J'ai peu d'activités et, d'une activité, j'ouvre une autre et remonte à la première …

Le point est onCreate s'appelle on, onResume chaque fois que l'activité est affichée. Par exemple, lorsque je ferme B qui a été précédemment démarré à partir de A, OnResume est appelé mais pas surCréer ….

  • Comment aligner le centre d'un bitmap dans un canevas dans Android?
  • ViewPager avec FragmentPagerAdapter ne montre pas le contenu
  • Reconnaissance de police à partir de dessin gratuit à la main
  • Problèmes avec Android XML Editor et Eclipse ... Difficile à modifier manuellement XML
  • L'exécution du test a échoué: l'exécution de l'instrumentation a échoué en raison du 'processus bloqué'. Lors du test d'une activité multiple d'Android
  • GetSize () n'est pas pris en charge sur les anciennes versions du système d'exploitation Android, getWidth () / getHeight () obsolète
  • Mon problème est que je ne veux pas exécuter onResume s'il vient après onCreate, je veux exécuter le code uniquement si onCreate n'a pas été appelé

    Est-ce possible de faire SANS drapeau statique?

    Existe-t-il une méthode ou un drapeau d'Android comme GetAfterOnCreate?

    @Override protected void onResume() { if(comesAfterOnCreate){ //DO not run this code }else{ //run the long task } 

    Je montre beaucoup de réponses avec la solution en utilisant le drapeau statique, Merci à vous tous pour l'effort et l'aide, mais j'étais intéressé est-ce qu'il y a une méthode ou quelque chose …

    6 Solutions collect form web for “Comment puis-je savoir que OnResume vient après onCreate?”

    Ce n'est pas un travail difficile, vous pouvez utiliser boolean ou voir ici. Est-il possible de vérifier était surCréer appelé en raison du changement d'orientation?

    Essaye ça,

     boolean flag = false; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); flag = true; .... } @Override protected void onResume() { super.onResume(); if(flag == true){ ..... // it has came from onCreate() } else{ .....// it has directly came to onResume() } } 

    Maintenant, lorsque l'Acitivité finira, la valeur du drapeau sera fausse à nouveau et onResume() sera appelé avec la valeur false.

    J'espère que cela fonctionne pour toi.

    Donc, dans mon commentaire:

     private boolean onCreateRunned = false; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); onCreateRunned = true; //More code } @Override public void onResume(){ super.onResume(); if(onCreateRunned){ onCreateRunned = false; //important, or it will run only once. // Do your code } } 

    Comme le montre l' Activité – Documentation Android .

    Une activité a essentiellement quatre états:

    1. Si une activité au premier plan de l'écran (en haut de la pile), elle est active ou en cours d'exécution.

    2. Si une activité a perdu de son focus mais qui est toujours visible (c'est-à-dire, une nouvelle activité non complète ou transparente se concentre sur votre activité), elle est en pause. Une activité interrompue est complètement en vie (elle conserve toutes les informations d'état et de membre et reste attachée au gestionnaire de fenêtres), mais peut être tué par le système dans des situations de mémoire extrêmement faible.

    3. Si une activité est totalement obscurcie par une autre activité, elle est arrêtée. Il conserve toujours toutes les informations d'état et de membre, mais il n'est plus visible pour l'utilisateur, de sorte que sa fenêtre est masquée et le système est souvent tué lorsque la mémoire est nécessaire ailleurs.

    4. Si une activité est interrompue ou arrêtée, le système peut laisser tomber l'activité de la mémoire en demandant qu'elle soit terminée ou simplement en supprimant son processus. Lorsqu'il est à nouveau affiché à l'utilisateur, il doit être complètement redémarré et restauré dans son état précédent.

    Voici le cycle de vie d'une activité, comme le montre la documentation Android:

    Entrez la description de l'image ici

    Il existe trois boucles clés que vous pourriez être intéressé par la surveillance de votre activité:

    1. Toute la durée de vie d'une activité se produit entre le premier appel à onCreate (Bundle) jusqu'à un seul appel final sur onDestroy (). Une activité fera toute la configuration de l'état "global" dans onCreate (), et libérer toutes les ressources restantes dans onDestroy (). Par exemple, s'il s'agit d'un thread en arrière-plan pour télécharger des données du réseau, il peut créer ce thread dans onCreate (), puis arrêtez le thread dans onDestroy ().

    2. La durée de vie visible d'une activité se produit entre un appel sur OnStart () jusqu'à un appel correspondant à onStop (). Pendant ce temps, l'utilisateur peut voir l'activité à l'écran, bien qu'il ne soit peut-être pas au premier plan et interagissant avec l'utilisateur. Entre ces deux méthodes, vous pouvez maintenir les ressources nécessaires pour montrer l'activité à l'utilisateur. Par exemple, vous pouvez enregistrer un BroadcastReceiver dans onStart () pour surveiller les changements qui ont une incidence sur votre interface utilisateur et l'annuler dans onStop () lorsque l'utilisateur ne voit plus ce que vous affichez. Les méthodes onStart () et onStop () peuvent être appelées plusieurs fois, car l'activité devient visible et cachée à l'utilisateur.

    3. La durée de vie d'un premier plan d'une activité se produit entre un appel à onResume () jusqu'à un appel correspondant à onPause (). Pendant ce temps, l'activité est en face de toutes les autres activités et interagit avec l'utilisateur. Une activité peut fréquemment passer entre les états repris et interrompus – par exemple lorsque le périphérique s'endort, lorsqu'un résultat d'activité est délivré, lorsqu'une nouvelle intention est fournie – de sorte que le code de ces méthodes devrait être assez léger.

    Conclusion: vous ne pouvez pas modifier l'ordre d'exécution du cycle de vie.

    Essayez d'inclure des toasts dans OnCreate et OnResume et testez si le toast "onResume" vient lorsque vous exécutez l'application avant le toast OnCreate. Ou imprimez un message de journal des méthodes respectives

    Je sais que @suri a raison. Mais si vous voulez être plus clair avec onCreate() et onResume()

    puis mettre

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println(">>>>>> This is oncreate method"); .... } @Override protected void onResume() { super.onResume(); System.out.println("This is onResume method <<<<<<<<<"); } 

    C'est le plus simple pour vérifier votre question.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.