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 :

finish() ne termine pas l'application


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut finish() ne termine pas l'application
    Bonjour à tous et à toutes,

    J'aimerai savoir comment quitter une application?
    La réponse: Utiliser finish()!

    Cependant, je possède plusieurs activity, chacune s'appelle entre elle.

    Ce qui veut dire que lorsque je suis sure la 2ème activity et que j’exécute finish(), ceci va me terminer mon activity (retour à l'activity précédente) mais ne va pas me quitter l'application!

    Auriez vous une idée?

    Merci d'avance!

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut
    si tu veux tu peut récupérer un résultat entre les activity:

    tu a deux activity A et B

    A est lancée au démarrage de l'application.

    tu démarre ton activity B avec startActivityForResult dans A.

    Dans l'activity B quand tu clic sur un bouton "Quitter" tu utilise setResult(22) (22 est chois arbitrairement) et ensuite tu appel finish();

    Dans A, tu utilise onActivityResult et tu récupère le resultCode. s'il est égale à 22 alors c'est que tu as cliquer sur "Quitter" et alors tu fait un finish() dans l'activité A.

    Si tu as plus d'activity continue en cascade en suivant ce schéma.

    Enfin, c'est cette méthode que j'utilise

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour ta réponse
    Cette solution est celle que je voulais éviter justement ^^

    En effet, j'ai énormément d'activité, cela va être fastidieux!

    Je me demande comment faire simple! En effet lorsque je clique sur le bouton "home", cela quitte l'application! Quel est le code qui se cache derrière?

  4. #4
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    Quand tu cliques sur le bouton 'home', cela ne quitte pas l'application. Et c'est bien le problème, car beaucoup de personnes pensant ça.

    Il ne fait que le mettre en background; rien de plus; mais ton application est toujours ouvert, et en pause en fond. T'as qu'à vérifier; va sur ton application, va dans une Activity X. Appuie sur le bouton HOME, et reviens dans ton application. Et tu verras que t’apparaitra au même endroit

    Bon, si tu y tiens vraiment, y a toujours System.exit(0); mais c'est très déconseillé (je ne sais pas pourquoi)

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Effectivement, tu as raison cela ne quitte pas l'application!

    J'ai essayé le System.exit mais cela me ferme mon activity et provoque un bogue sur l'activity précédente!

  6. #6
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android.os.Process.killProcess(android.os.Process.myPid())

  7. #7
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Points : 1 499
    Points
    1 499
    Par défaut
    Citation Envoyé par ZouBi Voir le message
    Bon, si tu y tiens vraiment, y a toujours System.exit(0); mais c'est très déconseillé (je ne sais pas pourquoi)
    Tout simplement parce que cela tue la JVM...

    Sinon je sais que sous l'api 3.X il existe une méthode pour nettoyer la pile des Activity (l'arborescence des appels). Il te suffirait de faire ça puis d’appeler finish() ensuite. En revanche je ne sais pas si c'est possible sous 2.X.

  8. #8
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    Citation Envoyé par Viish Voir le message
    Tout simplement parce que cela tue la JVM...

    Sinon je sais que sous l'api 3.X il existe une méthode pour nettoyer la pile des Activity (l'arborescence des appels). Il te suffirait de faire ça puis d’appeler finish() ensuite. En revanche je ne sais pas si c'est possible sous 2.X.
    Tu parles du flag FLAG_ACTIVITY_CLEAR_TASK à passer dans un intent, qui killera toutes les autres tâches en cours. Mais comme tu dis; dispo qu'après 3.0.

  9. #9
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par ZouBi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android.os.Process.killProcess(android.os.Process.myPid())
    Pareil, ceci me kill mon activity et je me retrouve avec l'activity précédente.


    Effectivement, je travaille avec une 2.2

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Bonjour/soir ,

    Je vais peut-être déterrer le sujet , mais n'aillant pas été mis en Résolu j'en déduit la réponse n'as pas été formulée.

    Je te proposerais :
    Qui doit marcher ,
    Ref Forum :
    http://www.developpez.net/forums/d10...t-bouton-back/
    http://www.developpez.net/forums/d99...r-application/

    Lien autre :
    http://download.oracle.com/javase/1....#exit%28int%29

    Ou sinon tu as une autre solution ... au passage d'activité tu kill la première ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    intent = new Intent(this, FinActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    finish(); 
    startActivity(intent);
    in FinActivity.class, call finish() in onCreate. Now explaining the code:

    in 1. you create an intent that erases all other activities (FLAG_ACTIVITY_CLEAR_TOP) and delete the current activity

    in 2. The activity destroys itself. An alternative is that you can make an splask screen in finActivity, this is optional
    Tu as un petit condensé de toutes les possibilités dans ce fil de conversation : http://stackoverflow.com/questions/2...se-application
    Qui d'ailleurs semble la meilleure solution d'après :
    http://stackoverflow.com/questions/2...034238#2034238 (voir la conversation ou il y a le numéro 46 )
    answered Apr 13 '10 at 19:40
    Neil Traft
    Cordialement à toi ,
    Fait nous un feedback de cette histoire !

  11. #11
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Il me semble qu'à un moment j'avais eu besoin de fermer plusieurs activity, et dans mon souvenir (je me trompe peut être, ça remonte à plusieurs mois), je faisais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void onPause()
    {
       super.onPause();
       finish();
    }

  12. #12
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour vos réponses!

    Je pense que toutes les solutions sont ici! A moi de me débrouiller pour les intégrer!

    Encore Merci

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

Discussions similaires

  1. Application qui ne se termine pas
    Par Tsukaasa dans le forum Delphi
    Réponses: 3
    Dernier message: 23/03/2007, 23h46
  2. WM_QUIT ne termine pas mon application !
    Par syj dans le forum Visual C++
    Réponses: 7
    Dernier message: 10/11/2006, 11h21
  3. Frame et terminal pas d'accord....
    Par superjoe dans le forum 2D
    Réponses: 3
    Dernier message: 23/03/2006, 15h30
  4. [AJAX] Ma fonction ne se termine pas...
    Par Davboc dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 08/03/2006, 12h05
  5. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42

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