2010-06-16 8 views
0

Je développe actuellement une application dans android qui accède aux valeurs wifi, c'est-à-dire que l'application doit balayer tous les points d'accès et leurs intensités de signal spécifiques. Je sais que je dois étendre la classe BroadcastReceiver en écrasant la méthode BroadcastReceiver.onReceive(Context context, Intent intent) qui est appelée lorsque les valeurs sont prêtes.
Peut-être existe-t-il des solutions fournies par le système Android lui-même, mais je suis relativement nouveau pour Android, donc je pourrais avoir besoin d'aide. Le problème que j'ai rencontré est que j'ai obtenu une classe (une activité, donc contrôlée par l'utilisateur) qui a besoin de ces résultats d'analyse pour deux choses différentes (d'abord pour enregistrer les valeurs dans une base de données, pas les deux à la fois!) Alors, comment concevoir le système de rappel afin de "transporter" les résultats de numérisation de onReceive(Context context, Intent intent) à l'opération prévue par l'utilisateur? Ma première solution était de définir des énumérations pour chaque cas d'utilisation (enregistrer ou utiliser pour les calculs) que les classes intéressées par wlan doivent soumettre lors de l'interrogation des valeurs. Mais cela forcerait la classe BroadcastReceiver à étendre l'enum en cours et à l'utiliser comme paramètre dans la fonction de rappel de la classe d'interrogation (cette classe d'interrogation a besoin de savoir ce qu'elle demandait)
Mais ça me semble gentil de sale;)
Donc, n'importe qui une bonne idée pour cela?Problème de conception avec les fonctions de rappel dans Android

Répondre

0

Vous souhaitez probablement utiliser une classe interne anonyme dans chaque activité et/ou une instance d'un BroadcastReciever dérivé dans chaque activité et l'enregistrer avec Context#registerReceiver. Ensuite, il a interagir avec son parent lorsque onRecieve est appelée. Ce que je pense que vous essayez de faire est de définir un BroadcastReciever dans votre fichier manifeste, puis de transmettre des données à une activité de cette façon. Ce qui n'est pas la meilleure façon de réaliser ce que vous voulez.

+0

Je pense que vous avez mal compris ma question. Je souhaite que le processus de numérisation soit complètement séparé de l'activité de l'interface graphique. L'interface graphique possède un objet, qui propose des méthodes pour obtenir des valeurs calculées en utilisant des valeurs wlan. Cela signifie que l'objet appartenant à l'interface graphique doit démarrer une sorte de service ou thread pour analyser les valeurs wlan, qui appelle ou notifie tous les écouteurs en attente d'un signal de type "Valeurs prêtes". Le problème est, que je dois gérer plusieurs paramètres comme "nombre d'analyses", "comment scanner", etc. à un moment où l'interface graphique ne sait plus (car elle est rappelée) –