后台活动中的BroadcastReceiver是否可能接收广播?

时间:2012-02-17 14:45:07

标签: android broadcastreceiver

BroadcastReceiver是否有可能在后台接收广播的活动中?如果没有,我该怎么办?

修改

让我澄清一下我真正需要的东西。 我有将从蓝牙接收数据的服务。 当它成功从蓝牙设备获取数据时,该服务将广播

活动有三种情况。

  1. 前景
  2. 弹出一个对话框并询问用户的内容 我认为这可以通过活动中的注册接收器来完成

    1. 背景
    2. 我只是不知道如何做这部分。 如果我在应用程序中注册接收器,则会显示通知。看了下面的答案之后,我想我可以在申请表上注册。

      1. 睡眠 唤醒设备。
      2. 谢谢。

3 个答案:

答案 0 :(得分:5)

你可能根本不想那样。活动并非旨在以这种方式使用。

您应该使用服务来处理它。或者如果需要有UI,则启动一个Activity。

我看到它有两种选择。

  1. 运行服务并在那里注册接收器。
  2. 如果可能,您可以在清单中注册广播接收器,然后在那里处理。 请记住,接收器将在主线程上运行,因此您应该向正在运行的服务发出信号或在此处启动服务或活动。也许是执行单个任务的服务。
  3. 使用IntentService可以轻松实现执行单个任务的服务。它有点像服务中包含的异步任务。

答案 1 :(得分:3)

  

BroadcastReceiver是否有可能在后台接收广播的活动中?如果没有,我该怎么办?

您可能会在致电registerReceiver之后和致电unregisterReceiver之前随时收到通知。如果您在“后台”时收到广播,则可能意味着您没有绑定注册并取消注册您的活动生命周期中的相应方法。

答案 2 :(得分:3)

如果您使用activit的上下文注册广播接收器,只要活动处于活动状态,它就会接收广播。

但是,您可以使用applicatino上下文注册接收器,即使活动不活动,它仍将接收广播。