Android 多次接收相同意图的广播,但仅发送一次

Android 多次接收相同意图的广播,但仅发送一次,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我有一个在特定条件下发送的意图。日志证明它只发送了一次,但接收方在毫秒间隔内多次接收到它 10-01 10:09:59.201: I/System.out(13543): SENDER CHECKPOINT 10-01 10:09:59.211: I/System.out(13543): RECEIVER CHECKPOINT 10-01 10:09:59.291: I/System.out(13543): RECEIVER CHECKPOINT 我已确认广播接收器只有一个注册,注册的

我有一个在特定条件下发送的意图。日志证明它只发送了一次,但接收方在毫秒间隔内多次接收到它

10-01 10:09:59.201: I/System.out(13543): SENDER CHECKPOINT  
10-01 10:09:59.211: I/System.out(13543): RECEIVER CHECKPOINT 
10-01 10:09:59.291: I/System.out(13543): RECEIVER CHECKPOINT 
我已确认广播接收器只有一个注册,注册的BR只使用一个动作过滤器。它仅用于在另一个线程中运行的服务广播意图的单个活动中。同样,日志证实了一次广播和多次收据。更重要的是,回音回执中的附加项为空

这怎么可能?有没有可能操作系统正在响应它

发送广播的代码:

private void sendBroadcast(boolean status, String message, String action){
     System.out.println("SENDER CHECKPOINT");

     Intent intent = new Intent(action);
     Bundle bundle = new Bundle();
     bundle.putBoolean("status", status);
     bundle.putString("message", message);
     intent.putExtras(bundle);
     sendBroadcast(intent);

}
private class displayUpdate extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) { 
            System.out.println("RECEIVER CHECKPOINT");


    };
}
接收广播的代码:

private void sendBroadcast(boolean status, String message, String action){
     System.out.println("SENDER CHECKPOINT");

     Intent intent = new Intent(action);
     Bundle bundle = new Bundle();
     bundle.putBoolean("status", status);
     bundle.putString("message", message);
     intent.putExtras(bundle);
     sendBroadcast(intent);

}
private class displayUpdate extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) { 
            System.out.println("RECEIVER CHECKPOINT");


    };
}
注册:

@Override
public void onResume() {
    super.onResume();

    try {
        // just in case onResume is called w/o a pause  
        try{activity.unregisterReceiver(displayReceiver);}catch(Exception e){}

        filterRefreshUI = new IntentFilter(REFRESH_UI);
        activity.registerReceiver(displayReceiver, filterRefreshUI);

    } catch (Exception e) {
        e.printStackTrace();
    }

}
@Override
public void onPause() {
    super.onPause();
    try{unregisterReceiver(displayReceiver);}catch(Exception e){} 
}
注销:

@Override
public void onResume() {
    super.onResume();

    try {
        // just in case onResume is called w/o a pause  
        try{activity.unregisterReceiver(displayReceiver);}catch(Exception e){}

        filterRefreshUI = new IntentFilter(REFRESH_UI);
        activity.registerReceiver(displayReceiver, filterRefreshUI);

    } catch (Exception e) {
        e.printStackTrace();
    }

}
@Override
public void onPause() {
    super.onPause();
    try{unregisterReceiver(displayReceiver);}catch(Exception e){} 
}
真的就这么简单!然而,接收器发射了两次


如果您想知道-如果应用程序被操作系统杀死,则在onPause/onResume中处理注册/注销,以防止内存泄漏。

也许您的代码中有错误。遗憾的是,我们无法帮助您,因为我们无法从这里看到您的代码。可能存在错误,但日志也会显示多个广播。所以。。。我认为这意味着我们不会看到任何代码?好吧,祝你好运。好吧,你到底在找什么?我有一个广播和接收器-你还想看什么?日志不说谎-只有一个广播,但两个收据!!!最相关的部分是发送或接收广播的任何东西(可能还有清单)。从我们的角度来看这一点。没有代码的调试是困难的,大多数情况下是不可能的。如果你有代码,但看不出哪里出了问题,你怎么会认为没有代码的人会发现错误呢?其中一个离题的原因是有原因的。