android - BroadcastReceiver trying to return result during a non-ordered broadcast -


in app broadcast receiver error cause. creating google cloud messaging demo

my logcat

06-03 15:09:37.584: e/broadcastreceiver(15498): broadcastreceiver trying return result during non-ordered broadcast 06-03 15:09:37.584: e/broadcastreceiver(15498): java.lang.runtimeexception: broadcastreceiver trying return result during non-ordered broadcast 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.content.broadcastreceiver.checksynchronoushint(broadcastreceiver.java:783) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.content.broadcastreceiver.setresult(broadcastreceiver.java:658) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ com.google.android.gcm.gcmbroadcastreceiver.onreceive(gcmbroadcastreceiver.java:56) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.app.activitythread.handlereceiver(activitythread.java:2609) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.app.activitythread.access$1700(activitythread.java:151) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.app.activitythread$h.handlemessage(activitythread.java:1380) 06-03 15:09:37.584: e/broadcastreceiver(15498):     @ android.os.handler.dispatchmessage(handler.java:102) 

this broadcast receiver

private final broadcastreceiver mhandlemessagereceiver = new broadcastreceiver() {          @override         public void onreceive(context context, intent intent) {              string newmessage = intent.getextras().getstring(config.extra_message);             string newname = intent.getextras().getstring("name");             string newimei = intent.getextras().getstring("imei");              log.i("gcmbroadcast","broadcast called."+newimei);              // waking mobile if sleeping             acontroller.acquirewakelock(getapplicationcontext());              string msg = lblmessage.gettext().tostring();             msg = newname+" : "+newmessage+"\n"+msg;             // display message on screen             lblmessage.settext(msg);             //lblmessage.append("\n"+newname+" : "+newmessage);                        toast.maketext(getapplicationcontext(),                      "got message: " + newmessage,                      toast.length_long).show();              /************************************/              //customlistviewvaluesarr.clear();              int rowcount = dbadapter.validatenewmessageuserdata(newimei);              log.i("gcmbroadcast", "rowcount:"+rowcount);              if(rowcount <= 1 ){                     final userdata schedspinner = new userdata();                      /******* firstly take data in model object ********/                     schedspinner.setname(newname);                     schedspinner.setimei(newimei);                     /******** take model object in arraylist **********/                   customlistviewvaluesarr.add(schedspinner);                   adapter.notifydatasetchanged();                  }                  //customlistviewvaluesarr.addall(spinneruserdata);                /************************************/              // releasing wake lock             acontroller.releasewakelock();         }     }; 

please tell me how can resolve error try find out on internet exact can,t find solution.

to begin not expert in android development , in case of broadcast receivers.

i went through code have posted here , beginner brain not find statement sets result. unable identify statement exception hits answer might vague.


according broadcastreceiver documentation running receivers in asynchronous fashion more efficient means recievers cannot use result or abort apis of broadcastreceiver class.

one solution problem using context.sendorderedbroadcast since dealing googlecloudmessages not liberty of handling broadcast sending part.

google cloud messaging broadcasts ordered. it's broadcast received in case non-ordered.

there function isorderedbroadcast() can used workaround can avoid setting result non-ordered broadcast.


Comments