Android广播接收器,每次应用程序启动时接收广播

Android广播接收器,每次应用程序启动时接收广播,android,service,callback,bind,broadcast,Android,Service,Callback,Bind,Broadcast,在我的主要活动中,我绑定了一个服务 //main activity class public void startNotificationService(){ // add notice service Context appContext = getApplicationContext(); Intent intent = new Intent(appContext,NotificationService.class); appContext.b

在我的主要活动中,我绑定了一个服务

    //main activity class
    public void startNotificationService(){
    // add notice service
    Context appContext = getApplicationContext();
    Intent intent = new Intent(appContext,NotificationService.class);
    appContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
创建该服务时,会注册一个广播接收器,因此当Android framework发送广播时,该服务可以捕获该广播并推送通知

    // service class
    @Override
    public void onCreate() {
    handlerMessage = new UnsolicitedMessageHandler();
    IntentFilter intentFilter = new IntentFilter("disassociation");
    intentFilter.addAction("remediation");
    registerReceiver(new UnsolicitedMessageHandler (), intentFilter);
}
以下是广播接收器的句柄类

class UnsolicitedMessageHandler extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            String message;
            if (action.equals("disassociation")) {
                message = intent.getStringExtra("frameName");
                showNotification(R.drawable.disconnect,
                        "Disassocation Notification", message);
            }
            if (action.equals("remediation")) {
                message = intent.getStringExtra("remMsg");
                showNotification(R.drawable.scan, "Remediation Notification",
                        message);
            }
        }
    }
一切正常,问题是每次我关闭应用程序并再次使用午餐时,都会收到未经请求的MessageHandler发送的广播(我知道,系统绝对不会发送广播)
这真是令人困惑和沮丧。有人能帮我吗?感谢adnvance。

我想这是因为每当你再次关闭并启动应用程序时,你都会收到StickyBrodcast


在onReceive中,使用isInitialStickyBroadcast()检查您正在处理的当前brodcast是否粘滞。如果这是粘性的,那么就忽略它,不做任何处理

我在这里找到了一个关于如何删除粘性意图的好答案。如果您的案例有粘性,请使用链接中提到的解决方案。非常感谢Changdeo Jadhav,您救了我一天!!!!!在我的例子中,粘性广播实际上是我自己发送的(我修改了Android框架类,在那里发送粘性广播),所以我可以将其修改为普通广播,问题应该得到解决。我应该好好研究一下什么是粘性广播。谢谢!