[英]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.