如何使用服务或广播接收器的意图?

时间:2009-12-15 19:33:36

标签: android

我需要能够在我的Activity关闭时处理/捕获Intent。所以我正在寻找服务或BroadcastReceiver。

是否可以“接收”服务本身的意图?我试图搜索,但找不到任何有用的东西。

使用BroadcastReceiver,我不确定它在Activity之外是如何工作的。它取决于正在打开/运行的活动吗?它可以单独运行吗?假设我的Activity被Android(或任务杀手应用程序)杀死,BroadcastReceiver是否仍然接收意图并处理它们?

我使用了BroadcastReceiver作为小部件,但这次我不想使用小部件。

我的目标是让用户打开Activity来设置一些选项。从那里,他们将能够关闭活动,但我仍然能够处理由系统发出的Intents。

我仍然是Android开发的新手,所以我可能离我需要的地方太远了。

我错了吗?

1 个答案:

答案 0 :(得分:8)

广播接收器是可以独立于活动和服务运行的应用程序组件,因此您所描述的用例肯定是受支持的。

如果您为要在intent-filter清单节点中处理的广播Intent注册receiver标记,即使您的申请流程已完全死亡,它也会收到所有匹配的广播意图(没有活动)或服务)。

以下代码段显示了如何将广播接收器添加到清单以侦听广播Intent,而不依赖于正在运行的活动或服务。

<receiver android:name=".MyBroadcastReceiver">
  <intent-filter>
    <action android:name="com.example.project.MY_BROADCAST_ACTION" />
  </intent-filter>
</receiver>

在广播接收器实现中,当您为其指定了意图过滤器的意图操作被广播时,将调用onReceive处理程序。

注意:某些系统广播无法以这种方式捕获,但一般来说,这是在没有Activity运行时响应系统事件的方法。