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 :

Comment attendre la fin d'un traitement lorsque l'on quitte l'application


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut Comment attendre la fin d'un traitement lorsque l'on quitte l'application
    Bonjour,

    Quand un utilisateur quitte l'application, j'ai besoin d'envoyer des informations à un serveur via un thread qui peut lui même se relancer selon les circonstances.

    Hors je peux difficilement lancer le thread puis faire juste après un System.exit(0);

    De ce fait j'ai mis une temporisation, y aurait-il un moyen de faire ceci ? Je pourrais faire une boucle aussi mais cela consommerait des ressources...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Citation Envoyé par solika Voir le message
    System.exit(0);
    Pourquoi as-tu besoin de faire ce genre d'appel ? Car ce n'est vraiment pas conseiller de quitter une application ainsi. En tous les cas, ce n'est pas ce qui est recommandé dans les guidelines de développement.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    A bon, tu fais comment alors ? finish();

    De plus sur cette page http://stackoverflow.com/questions/2...id-application ; la réponse la plus fréquente fais mention d'un System.exit(0); après System.runFinalizersOnExit(true);

    En fait j'ai la réponse avec mon shutdown hook !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Oui, il faut utiliser la méthode finish()

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui... en fait, ceux qui pronent le "System.exit(0);" sont restés à l'époques des vieux OS ou les applications devaient être quittées pour libérer de la mémoire instantanément. Dans Android (mais c'est aussi le cas sous iOS) c'est le système qui réclame de la mémoire et tue les applications. Jamais l'utilisateur.

    Une activité est finie ? on fait finish() dessus.
    On a besoin de faire quelque chose en "background" ? on lance un service.
    etc...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    Sauf que je rencontre un problème.

    Malgré le lancement d'une nouvelle activité par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Intent intent  = new Intent(context, EndOfAlarm.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
    finish();
    Quand l'utilisateur veut arrêter l'application, il me "relance" les anciennes activités...

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    Bon cela fonctionne à peu près sans System.exit(0);

    Le problème c'est qu'il me garde la dernière activité quand même dans le gestionnaire des tâches.

    Comment faire pour la supprimer du gestionnaire des tâches ?

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Dans le gestionnaire des tâches ?

    Si l'application reste dans le gestionnaire des tâches c'est qu'elle est en train de faire quelque chose (il reste un "hook" sur l'application : service, thread, ...).

    Par contre si on parle de la liste des applications récentes, c'est tout à fait normal.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. [Vista]Comment attendre la fin d'exécution d'un processus ?
    Par gb_68 dans le forum Threads & Processus
    Réponses: 9
    Dernier message: 15/06/2007, 23h17
  2. [Process] comment attendre la fin du chargement?
    Par elflamby dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/04/2007, 15h04
  3. [VB.net] Comment attendre la fin d'un programme ?
    Par nakata77 dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/09/2006, 17h16
  4. [Thread] comment attendre la fin d'un thread?
    Par billynirvana dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 24/08/2005, 10h43
  5. Comment Attendre la fin d'un Processus
    Par mr_titi dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/06/2003, 16h35

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