[英]Android broadcast receiver, receive a broadcast every time when app launched
在我的主要活动中,我绑定服务。
//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框架何时发送广播,该服务都可以捕获该广播并推送通知。
// 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);
}
}
}
一切正常,问题在于每次我杀死该应用程序并再次吃午餐时,UnsolicitedMessageHandler都会接收到广播(我知道,系统绝对不会发送广播),这确实令人困惑和沮丧。 有人可以帮助我吗? 提前感谢。
我认为这是因为每当您杀死并重新启动应用程序时,您都会收到STICKY广播。
在onReceive中,使用isInitialStickyBroadcast()来检查您正在处理的当前广播是否为STICKY。 如果那是STICKY,则忽略并不进行任何处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.