簡體   English   中英

當應用暫停或在后台時,避免接收廣播接收器

[英]avoid to receive Broadcast Receiver when app is pause or in background

我已經注冊了設備級別的廣播接收器(android.net.wifi.WIFI_STATE_CHANGED),它可以很好地監控WiFi信號,但我只想在應用程序處於活動狀態或應用程序處於后台或暫停狀態時才能使用Lassen接收類。當前我正在離開我的應用程序並瀏覽任何其他應用 如果我改變wifi信號(關閉或打開),那么我的Receiver生成事件。 我想僅在我的應用程序處於活動狀態時生成事件,我不想在任何其他應用程序中收到通知

  <receiver android:name="com.android.mobileTimerClock.WifiReceiver"  >
              <intent-filter>

            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
    </intent-filter>
          </receiver>

您必須在Activity.onResume()方法上以progamatically方式注冊BroadcastReceiver,並在Activity.onPause方法上取消注冊它。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    // Create the receiver
    receiver = new TimelineReceiver();
    filter = new IntentFilter( UpdaterService.NEW_STATUS_INTENT );
}

protected void onResume() {
    super.onResume();
    super.registerReceiver(receiver, filter,
             "com.marakana.yamba.SEND_TIMELINE_NOTIFICATIONS", null);
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

我很高興看到你的問題。我認為你在onDestroy()方法中取消注冊了Receiver(),以便你在后台接收廣播。如果你想避免它,那么在onPause()中取消注冊接收器。

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

I hope its help you.

清單接收器旨在處理廣播事件,即使基本活動未處於活動狀態。 實際上,您可以自己擁有一個清單廣播接收器(沒有任何活動)。 如果您不希望根據特定活動的狀態調用onReceive(),則無法使用清單接收器。

但是,您仍然可以選擇處理事件的方式。 在處理事件之前,您可以檢查您的活動(或活動)是否處於活動狀態(使用ActivityManager)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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