我已经注册了设备级广播接收器( android.net.wifi.WIFI_STATE_CHANGED),它可以很好地监测WiFi信号,但我想拉森接收类只当应用程序是活动的或应用程序不在后台或暂停state.currently当我离开我的应用程序,并浏览任何其他应用程序。如果我改变了wifi信号(关闭或打开),那么我的接收器就会产生事件。我只想在我的应用程序处于活动状态时生成事件,我不想在任何其他应用程序中收到通知
<receiver android:name="com.android.mobileTimerClock.WifiReceiver" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
</intent-filter>
</receiver>发布于 2013-05-08 00:47:07
您必须在Activity.onResume()方法上程序注册您的BroadcastReceiver,并在Activity.onPause方法上注销它。
Example
@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);
}发布于 2018-05-23 16:46:21
我很高兴看到您的问题,我认为您在onDestroy()方法中使用unregisterReceiver(),以便您在background.If中接收广播时希望避免它,然后在onPause()中注销接收器。
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
I hope its help you.发布于 2013-05-08 01:13:26
清单接收器用于处理广播事件,即使基本活动未处于活动状态。事实上,您可以拥有一个清单广播接收器本身(没有任何活动)。如果不希望基于特定活动的状态调用onReceive(),则不能使用清单接收器。
但是,您仍然可以选择处理事件的方式。您可以在处理事件之前检查活动(或多个活动)是否处于活动状态(使用ActivityManager)。
https://stackoverflow.com/questions/16424323
复制相似问题