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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 35
    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
    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 éprouvé
    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
    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 : 35
    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
    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 chevronné
    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
    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 : 35
    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
    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 chevronné
    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
    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
    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 chevronné
    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
    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.

+ 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