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 :

BroadcastReceiver et porté des variable


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 65
    Points : 37
    Points
    37
    Par défaut BroadcastReceiver et porté des variable
    Bonjour,

    j'ai un petit problème en ce qui concerne la porté des variables dans un BroadcastReceiver.

    Code :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    public class BluetoothUtilities 
    {
     
    	private BluetoothAdapter _bluetoothAdapter;
    	private Vector<String> _deviceDiscovered;
    	private Activity _act;
     
     
    	private final BroadcastReceiver _Receiver = new BroadcastReceiver() 
    	{
    	    public void onReceive(Context context, Intent intent) 
    	    {
    	        String action = intent.getAction();
     
    			if(BluetoothDevice.ACTION_FOUND.equals(action)) 
    			{
    				BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    				_deviceDiscovered.add(device.getAddress());
    				//((Main) _act).displayTextViewResult("--"+device.getAddress());
    			}
     
    			else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) 
    			{
    				((Main) _act).displayTextViewResult("------"+_deviceDiscovered.size()+"\n");
    			}
     
    	    }
    	};
     
     
     
    	public BluetoothUtilities(Activity act)
    	{
    		_act = act;
    		_deviceDiscovered = new Vector<String>();
    		_bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     
     
    		IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    		_act.registerReceiver(_Receiver, filter);
     
    		filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    		_act.registerReceiver(_Receiver, filter);
    	}
    ....
    ....

    J'ai donc une classe avec un vector et un BroadcastReceiver. Lors d'une réception de données, j'ajoute un string à mon vector, mais lorsque j'ai fini de scanner le reseaux bluetooth, j'affiche la taille et çà me donne des valeur incohérentes.

    Si par exemple j'ai ajouté 4 éléments dans mon vector, la size() me retourn 0, 2 ou autre choses, comme si la modification n'avait pas était prise en compte.
    Donc je pense qu'il doit y avoir un conflit quant on utilise un objet dans le BroadcastReceiver, mais j'ai rien trouvé et là je suis bloqué ...

    Merci

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Salut,

    Ton problème peut peut être provenir du faite que la classe Vector n'est pas synchro. ( http://java.developpez.com/faq/java/...ECTIONS_vector )

    Du coup essaye peut être en utilisant l'objet ArrayList.
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    J'ai essayé avec un ArrayList mais toujours sans succès.

    Les modifications s'effectuent bien dans le BroadcastReceiver, mais ne sont presque jamais prises en compte à l'extérieur. Pourtant c'est bien le méme vecteur.
    J'ai essayé en créant une class héritant de BroadcastReceiver et en lui passant un vecteur en paramètre, mais encore le même problème.

    J'ai l'impression que c'est du à une sorte de conflit de threads. Mais je bloque complètement. ^^'

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Salut,

    Essaye peut être de synchronizer l'accès à ta liste, ou utiliser un mécanisme de handler pour gérer ta liste.
    Si on reprend l'exemple de Google, ils utilisent un "ArrayAdapter" pour gérer la liste des devices trouvés par bluetooth. Tu as essayé comme ça ?
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Bon, finalement j'ai opté pour une autre méthode de conception...
    Ca reste encore un mystère, mais merci pour l'aide

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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