2017-01-19 3 views
0

Je suis en train de tester mon application Android en cours de développement.Activity.onDestroy étant appelé à chaque appui sur le bouton précédent

Il contient un seul MainActivity

J'ai remarqué par des tests que OnDestroy était appelé à chaque fois que j'appuie sur le bouton de retour. Je pensais que c'était bizarre. J'ai donc créé une nouvelle application d'activité vide en utilisant le studio Android, et n'a ajouté aucun code. Juste un simple bonjour monde.

Même dans cette appli Hello World, on appelle s'appelle onDestroy chaque fois que je repasse.

Je cours un Samsung S4 et je n'ai aucune raison de croire qu'il est affamé de ressource. Qu'est-ce qui se passe ici?

J'essayé d'installer android: launchMode à toutes les valeurs disponibles dans AndroidManifest.xml, et rien de tout cela a travaillé ....

Répondre

0

activité se détruit chaque fois que vous appuyez sur le bouton retour i.e. comportement par défaut Android. C'est ainsi que le code circule. override onBackPressed dans votre activité

/** 
    * called when user press back button on device 
    */ 
    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
    } 

Aller à l'intérieur onBackPressed qui se trouve à l'intérieur FragmentActivity qui montre qu'il va d'abord pop tous les fragments de l'activité, puis il terminera l'activité.

/** 
    * Take care of popping the fragment back stack or finishing the activity 
    * as appropriate. 
    */ 
public void onBackPressed() { 
    if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) { 
     supportFinishAfterTransition(); 
    } 
} 
0

Il est normal et attendu que OnDestroy() soit appelé après que le bouton de retour a été enfoncé. Ceci est une partie standard du cycle de vie de l'activité Android. Vous pouvez lire à propos du cycle de vie ici: https://developer.android.com/guide/components/activities/activity-lifecycle.html

Je ne recommanderais pas de contourner le comportement du bouton arrière comme jitesh l'a suggéré sauf si vous avez une bonne raison. Les utilisateurs s'attendent à ce que votre application soit "fermée" (détruite) une fois le bouton de retour enfoncé.

0

Si vous voulez OnDestroy() ne pas être appelé à chaque fois que vous appuyez sur le bouton de retour:

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); // remove this line 
}