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 :

Problème synchronisation Thread()


Sujet :

Android

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Problème synchronisation Thread()
    Bonjour,

    Mon but est d'afficher un progressDialog, tant que de nouvelles coordonnées GPS n'ont pas été trouvées.
    Mes variables longitude et latitude étant initialisées à 0, je fais comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // longitude = 0;
    // latitude = 0;
    // progressDialog.show()
     
    Thread checkLocation = new Thread(new Runnable() {  	
       public void run() {
         Log.e("APP", "Lancé!");
         while (latitude == 0 && longitude == 0) {
              try {
                   synchronized(this) {
                      wait();
    	       }
    	  } catch (InterruptedException e) {
    	       Log.e("APP", "Erreur Thread Loc.: " + e.getMessage());
    	  }
         }
         Log.e("APP", "OK! " + longitude + "/" + latitude);
         // envoi vers handler et progressDialog.dismiss();
       }
    });
     
    checkLocation.start();
    Et mon OnLocationChanged:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    LocationListener locListener = new LocationListener() {
         @Override
         public synchronized void onLocationChanged(Location loc) {
              latitude = loc.getLatitude();
    	  longitude = loc.getLongitude();
    	  Log.i("APP", "changé: " + latitude + "/" + longitude);
    	  notify();
         }
    }
    Mon LogCat part bien: "Lancé!"
    Puis j'obtiens bien: "changé: xx/xx"
    Mais jamais je vois le "OK!" final, à croire que le Thread reste en wait()...

    Comment bien synchroniser tout ça?
    Merci

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Peut être que le problème provient que tu fais ton wait depuis ton thread et ton notify depuis ton listener.
    Donc comme les deux n'appartiennet pas au même objet alors il ne se déclenche pas .

    Un tuto :
    http://viennet.developpez.com/cours/...hread/#LII-F-3

    Il faut faire le wait et le notify sur le même objet, cad ta classe

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    N'étant pas sur de moi (et ne comprenant d'ailleurs qu'à moitié comment appliquer ta réponse ) j'ai entre temps utilisé un sémaphore, avec acquire et release je n'ai plus aucun problème
    Merci

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

Discussions similaires

  1. problème Synchronisation Threads
    Par leconteconte dans le forum Général Java
    Réponses: 2
    Dernier message: 01/01/2013, 16h47
  2. Problème synchronisation thread
    Par Tinkh dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 27/01/2011, 10h34
  3. [WPF] Circular ProgressBar, problème synchronisation des threads
    Par Babas007 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 20/12/2010, 19h44
  4. [THREAD] Problème synchronisation
    Par goddet dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/10/2006, 09h16
  5. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57

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