Android broadcast receiver, receive a broadcast every time when app launched
在我的主要活动中,我绑定服务。
1 2 3 4 5 6 7 | //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框架何时发送广播,该服务都可以捕获该广播并推送通知。
1 2 3 4 5 6 7 8 | // service class @Override public void onCreate() { handlerMessage = new UnsolicitedMessageHandler(); IntentFilter intentFilter = new IntentFilter("disassociation"); intentFilter.addAction("remediation"); registerReceiver(new UnsolicitedMessageHandler (), intentFilter); } |
以下是广播接收器的句柄类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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); } } } |
一切正常,问题是每次我杀死该应用程序并再次吃午餐时,UnsolicitedMessageHandler都会接收到广播(我知道,系统绝对不会发送广播)
确实令人困惑和沮丧。有人可以帮助我吗?致谢。
我认为这是因为每当您杀死并再次启动您的应用时,您都会收到STICKY广播。
在onReceive中,使用isInitialStickyBroadcast()来检查您正在处理的当前广播是否为STICKY。如果那是STICKY,则忽略并不进行任何处理