簡體   English   中英

Android廣播接收器,每次應用啟動時都會接收廣播

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM