首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在app暂停或后台接收广播接收器

避免在app暂停或后台接收广播接收器
EN

Stack Overflow用户
提问于 2013-05-08 00:42:39
回答 3查看 1.2K关注 0票数 0

我已经注册了设备级广播接收器( android.net.wifi.WIFI_STATE_CHANGED),它可以很好地监测WiFi信号,但我想拉森接收类只当应用程序是活动的或应用程序不在后台或暂停state.currently当我离开我的应用程序,并浏览任何其他应用程序。如果我改变了wifi信号(关闭或打开),那么我的接收器就会产生事件。我只想在我的应用程序处于活动状态时生成事件,我不想在任何其他应用程序中收到通知

代码语言:javascript
复制
  <receiver android:name="com.android.mobileTimerClock.WifiReceiver"  >
              <intent-filter>

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

回答 3

Stack Overflow用户

发布于 2013-05-08 00:47:07

您必须在Activity.onResume()方法上程序注册您的BroadcastReceiver,并在Activity.onPause方法上注销它。

Example

代码语言:javascript
复制
@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);
}
票数 1
EN

Stack Overflow用户

发布于 2018-05-23 16:46:21

我很高兴看到您的问题,我认为您在onDestroy()方法中使用unregisterReceiver(),以便您在background.If中接收广播时希望避免它,然后在onPause()中注销接收器。

代码语言:javascript
复制
@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

I hope its help you.
票数 1
EN

Stack Overflow用户

发布于 2013-05-08 01:13:26

清单接收器用于处理广播事件,即使基本活动未处于活动状态。事实上,您可以拥有一个清单广播接收器本身(没有任何活动)。如果不希望基于特定活动的状态调用onReceive(),则不能使用清单接收器。

但是,您仍然可以选择处理事件的方式。您可以在处理事件之前检查活动(或多个活动)是否处于活动状态(使用ActivityManager)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16424323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档