Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BroadcastReceiver在非有序广播期间尝试返回结果_Android_Broadcastreceiver - Fatal编程技术网

Android BroadcastReceiver在非有序广播期间尝试返回结果

Android BroadcastReceiver在非有序广播期间尝试返回结果,android,broadcastreceiver,Android,Broadcastreceiver,在我的应用程序中,广播接收器错误是原因。我正在创建谷歌云消息演示 我的日志是 06-03 15:09:37.584: E/BroadcastReceiver(15498): BroadcastReceiver trying to return result during a non-ordered broadcast 06-03 15:09:37.584: E/BroadcastReceiver(15498): java.lang.RuntimeException: BroadcastRecei

在我的应用程序中,广播接收器错误是原因。我正在创建谷歌云消息演示

我的日志是

06-03 15:09:37.584: E/BroadcastReceiver(15498): BroadcastReceiver trying to return result during a non-ordered broadcast
06-03 15:09:37.584: E/BroadcastReceiver(15498): java.lang.RuntimeException: BroadcastReceiver trying to return result during a non-ordered broadcast
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.content.BroadcastReceiver.checkSynchronousHint(BroadcastReceiver.java:783)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.content.BroadcastReceiver.setResult(BroadcastReceiver.java:658)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at com.google.android.gcm.GCMBroadcastReceiver.onReceive(GCMBroadcastReceiver.java:56)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2609)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.app.ActivityThread.access$1700(ActivityThread.java:151)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
06-03 15:09:37.584: E/BroadcastReceiver(15498):     at android.os.Handler.dispatchMessage(Handler.java:102)
这是广播接收机

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 up mobile if it is sleeping
            aController.acquireWakeLock(getApplicationContext());

            String msg = lblMessage.getText().toString();
            msg = newName+" : "+newMessage+"\n"+msg;
            // Display message on the 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();
        }
    };
private final BroadcastReceiver mHandleMessageReceiver=new BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
String newMessage=intent.getExtras().getString(Config.EXTRA_MESSAGE);
String newName=intent.getExtras().getString(“名称”);
String newIMEI=intent.getExtras().getString(“imei”);
Log.i(“GCMBroadcast”、“广播呼叫”+newIMEI);
//在手机处于睡眠状态时唤醒手机
aController.acquireWakeLock(getApplicationContext());
字符串msg=lblMessage.getText().toString();
msg=newName+“:“+newMessage+”\n“+msg;
//在屏幕上显示消息
lblMessage.setText(msg);
//lblMessage.append(“\n”+newName+”:“+newMessage”);
Toast.makeText(getApplicationContext(),
“收到消息:”+newMessage,
Toast.LENGTH_LONG).show();
/************************************/
//CustomListViewValuesArr.clear();
int rowCount=DBAdapter.validateNewMessageUserData(newIMEI);
Log.i(“GCMBroadcast”,“行计数:”+rowCount);

if(rowCount首先,我不是Android开发方面的专家,尤其是在广播接收机方面

我浏览了你在这里发布的代码,我的初学者大脑找不到任何设置结果的语句。我无法识别异常击中你的语句,因此我的答案可能是模糊的


根据
BroadcastReceiver
文档,以异步方式运行接收器效率更高,但这意味着接收器不能使用BroadcastReceiver类的结果或中止API

解决这个问题的一个方法是使用Context.sendOrderedBroadcast
,但由于我们处理的是GoogleCloudMessages,因此无法自由处理广播发送部分

谷歌云消息广播是有序的。只是在这种情况下收到的广播是非有序的


有一个函数
isOrderedBroadcast()
,可以作为一种解决方法,这样您就可以避免将结果设置为非有序广播。

我也有同样的问题,请您指出异常发生的原因。我们可以一起找到解决方法。嗨,我也有同样的问题…有人能帮助我们吗。。。