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 de Message entre thread


Sujet :

Android

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut Comment attendre la fin de Message entre thread
    Bonjour à tous,

    Imaginons une Activity A et un Thread B.

    J'envoi une succession de message de A vers B qui vont me permettre d'initialiser/peupler un membre de A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for(DPCamera cam : cameras)
    {
    	comDPmessage 		= comDPHandler.obtainMessage();
    	comDPmessage.what 	= NetworkMessages.INFO_VIDEO_MOIS;
    	comDPmessage.obj	= i;//cam.getNumCam();
    	comDPHandler.sendMessage(comDPmessage);
    	i++;
    }
     
    //Comment attendre la fin des message en toute sécurité ici
     
    this.initCalendar();
    De son Coté B , envoi un message à A une fois qu'il à fini de récupérer les données ce qui permet à A de remplir une variable au fur et à mesure des traitement des messages GET_DATA.

    Le problème c'est que je dois lancer une méthode d'initialisation dans mon activity qui nécessite que la variable mise à jour via les messages soit bien intialisé et remplie.
    D'ou ma question , comment puis je attendre que tous mes messages ai été traité correctement avant de déclencher ma méthode d'initialisation ?

    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Bonjour,
    J'imagine que les deux communiquent grâce à un Handler.
    Pourquoi ne pas utiliser deux messages différents, un pour les actions intermédiaires et un pour l'action finale.

    comDPmessage.what = ACTION_INTERMEDIAIRE
    et
    comDPmessage.what = ACTION_FINALE

    Est ce que cela peut marcher pour toi ?

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Merci de ta réponse,

    Le problème c'est que mon Thread ne sais pas quand il traite le dernier message donc du coup je vois pas bien comment renvoyer un message différent.

    J'ai pour le moment opté pour une solution un "bricolage". Dans ma boucle qui envoi les message j'incrémente un compteur. A chaque réponse du thread je décrémente ce compteur et ne lance l'initialisation que lorsque le compteur est à 0.

    J'espérais qu'il y'ai une solution plus propre.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Tu ne sais pas quand tu arrives à la fin car tu es dans une boucle for each ?

    Tu ne peux pas faire un truc comme ça (je sais que tu m'as dis non mais j'insiste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Override
    public void run() {
    	//actions quelconques
    	for () {
    		//action et envoi message
    	}		
    	//envoi message finale pour dire que tout c'est bien passé
     
    }

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Le traitement des messages est il séquentiel (fifo) ? Si c'est le cas je pourrais effectivement procéder comme tu me le conseil et avoir un message qui lancerai mon initialisation.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Oui chaque Handler possède une file de messages à traiter

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

Discussions similaires

  1. [Process] comment attendre la fin du chargement?
    Par elflamby dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/04/2007, 15h04
  2. [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
  3. Messages entre threads
    Par Casimir33 dans le forum Visual C++
    Réponses: 11
    Dernier message: 25/07/2006, 15h18
  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