52 votes

L'appel de finish () sur une activité Android ne se termine pas réellement

Je suis appelant finish() mais mon activité continue.

J'ai une activité qui est invoquée par un menu à partir de l'activité principale de l'écran. Dans mon activité, en onCreate() méthode que j'ai le fragment de code suivant:

    // Make sure there are some events in the list.
    if (theEventArrayList.isEmpty()){
        Toast.makeText(this, "Event List is empty", Toast.LENGTH_LONG).show();
        finish();
    }
    SummarizeCurrentEvent();
    graphEvents();

Si la liste est vide, il met en place le Toast, et je peux définir un point d'arrêt sur l'appel à la finish(). Si j'ai pas de là dans le débogueur, il va à droite à l' SummarizeCurrentEvent(). J'ai pensé finish() permettrait de sortir de l'activité. N'est-ce pas le cas? Où puis-je trouver plus de renseignements sur cette méthode?

79voto

Nanne Points 35880

Vous devriez mettre une déclaration return après cela finish , car la méthode appelée finish sera exécutée complètement sinon.

aussi, voir cette question: à propos de finish () dans Android

7voto

Robby Pond Points 37875

finish () indique simplement à l'activité de faire ce qu'elle doit faire pour terminer, par exemple. arrêt, appel à onPause, rapport du résultat au parent, etc. Il ne fait pas d'appel exit () ni quoi que ce soit.

Vous devriez revenir après l'appel de finish ().

4voto

Pedro Loureiro Points 6889

Les ajouter aux autres réponses, vous pouvez avoir (Re)onStart, onResume et onPause invoquée.

Je dis cela parce que dans le lien suivant, il y a un tableau qui indique que, pour une activité à être tué, d'abord, il est appelé onPause (et, probablement, mais pas garanti) sur Arrêt et onDestroy.

http://developer.android.com/reference/android/app/Activity.html

1voto

Eric Fossum Points 910

Assurez-vous de référence de l'Android cycle de vie lors de la planification du démarrage et de l'arrêt de votre application. Ce diagramme a sauvé ma santé mentale à de nombreuses reprises... Comme vous pouvez le voir onDestroy() est en fait la dernière partie de votre programme, onFinish() semble être moins fiable.

http://developer.android.com/guide/topics/fundamentals.html

Apparemment, je ne suis pas autorisé à poster des images, afin de vérifier le lien et faites défiler jusqu'en bas (plus de 3/4 de la descente sous l'activité "cycle de vie")

0voto

Falmarri Points 20281

Terminer termine l'activité, mais la boucle principale ne permet aucune interaction avec l'interface utilisateur. Vous devez attendre que la boucle d'interface utilisateur s'exécute, c'est-à-dire après que vous reveniez de onCreate .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X