i using localbroadcastmanager make broadcast activtiy , services using application context , this:
public class commonforapp extends application{ public void broadcastupdateuicommand(string[] updateflags, string[] flagvalues) { intent intent = new intent(update_ui_broadcast); (int = 0; < updateflags.length; i++) { intent.putextra(updateflags[i], flagvalues[i]); } mlocalbroadcastmanager = localbroadcastmanager.getinstance(mcontext); mlocalbroadcastmanager.sendbroadcast(intent); }}
now using listener in service, calling broadcastupdateuicommand() ,like this:
public class mservice extends service { public buildnowplaylistlistlistener buildcursorlistener = new buildnowplaylistlistlistener() { @override public void onservicelistready() { mapp.broadcastupdateuicommand( new string[] { commonforapp.init_drawer}, new string[] {""}); }}}
and receiving broadcast in activity, this:
public class mactivity extends activity{ broadcastreceiver mreceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { mtoast.showtext("in onreceive"); //toast check if (intent.hasextra(commonforapp.init_drawer)) initialisedrawer(); }}; }
mapp instance of application. commonforapp application class.
but in activity not receving broadcast(the broadcast manager initialised using application context) .
can suggest me why not receiving broadcast in activity? ..
.thanks in advance !
in activity:
protected broadcastreceiver mmessagereceiver = new broadcastreceiver() { @override public void onreceive(context context, final intent intent) { runonuithread(new runnable() { @override public void run() { if(intent.hasextra("type")){ // action } } }); } }; @override public void oncreate(bundle savedinstancestate, persistablebundle persistentstate) { super.oncreate(savedinstancestate, persistentstate); localbroadcastmanager.getinstance(this).registerreceiver(mmessagereceiver, new intentfilter("data-loaded")); } protected void ondestroy() { super.ondestroy(); localbroadcastmanager.getinstance(this).unregisterreceiver(mmessagereceiver); }
then send broadcast:
public static void sendbroadcastmessagedataloaded(context context, string datatype){ intent intent = new intent("data-loaded"); intent.putextra("type", datatype); localbroadcastmanager.getinstance(context).sendbroadcast(intent); }