Je crée une application de chat simple. Quand je reçois un message, j'ai envoyé un message de diffusion. Comme cela est exécuté à l'intérieur d'un thread démarré par un service, je passe le contexte au thread.LocalBroadcastReceiver ne fonctionne pas à l'intérieur d'un thread
MyConnection
est un fil d'extension de classe.
@Override
public void onCreate() {
super.onCreate();
connection = new MyConnection(getApplicationContext());
}
donc à l'intérieur du fil quand je reçois un message, je fais ça ...
Intent i = new Intent();
i.putExtra("from", message.getFrom());
i.putExtra("message", message.getBody());
i.setAction(MyService.MESSAGE_RECEIVED);
_context.sendBroadcast(i);
_context
est le getApplicationContext()
je suis passé au constructeur du fil. J'ai le receiver
enregistré dans mon fichier manifeste.
Donc, tout cela est mon travail et le récepteur reçoit le message avec succès.
Maintenant, je veux changer cela pour utiliser le LocalBroadcastManager
. Donc, ce que je faisais était tout simplement changer le _context.sendBroadcast(i)
à
LocalBroadcastManager.getInstance(_context).sendBroadcast(i);
Cependant, mon BroadcastReceiver
ne reçoit aucune des émissions envoyées de cette façon.
Qu'est-ce que je fais mal? Dois-je enregistrer le récepteur d'une manière différente dans Manifest pour recevoir des émissions locales? Y a-t-il d'autres étapes requises pour le faire fonctionner?
pouvez-vous essayer de cette façon? http://stackoverflow.com/a/12270926/1218762, je ne suis pas sûr de ce –
cela fonctionne pour moi: http://stackoverflow.com/a/16832647/1218762 –