BroadcastReceiver onReceive 函数运行两次

The BroadcastReceiver onReceive function runs two times

这是我的消息来源。我正在使用 GCM 推送通知将消息发送到一个应用程序到另一个应用程序。消息发送时第一次onReceive()方法只调用一次消息,发送第二次或多次onReceive()方法调用两次我怎么解决。

BroadcastReceiver  mHandleMessageReceiver = new BroadcastReceiver() 
{
     @Override
     public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString(Config.EXTRA_MESSAGE);
        if(newMessage.equals("request"))
        {
            System.out.println("Before Request Count"+reqcount);
                Userdetails();
        }
        else if(newMessage.equals("cancel"))
        {
            requestcanceled();
        }
        else
        {

        }
    }
    }

非常感谢...

我认为这可能是 GCM 错误。许多用户遇到了同样的问题。查看 this thread 了解更多详情

您好,您找到了解决该问题的方法。

BroadcastReceiver  mHandleMessageReceiver = new BroadcastReceiver() 
{
     @Override
     public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString(Config.EXTRA_MESSAGE);

context.unregisterReceiver(this); // this line I will added.
        if(newMessage.equals("request"))
        {
            System.out.println("Before Request Count"+reqcount);
                Userdetails();
        }
        else if(newMessage.equals("cancel"))
        {
            requestcanceled();
        }
        else
        {

        }
    }
    registerReceiver(mHandleMessageReceiver, new IntentFilter(Config.DISPLAY_MESSAGE_ACTION));
    }

收到消息后,只需注销收件人并再次注册收件人即可。现在它对我来说工作正常。