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

Rya*_*ord 2 android

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

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

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

我已经使用BroadcastReceiver作为小部件,但这次我不想使用小部件.

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

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

我错了吗?

Ret*_*ier 8

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

如果intent-filter为要在receiver清单节点中处理的广播Intent 注册标记,即使您的应用程序进程完全死亡(没有活动或服务),它也将接收所有匹配的广播Intent.

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

<receiver android:name=".MyBroadcastReceiver">
  <intent-filter>
    <action android:name="com.example.project.MY_BROADCAST_ACTION" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

在Broadcast Receiver实现中,onReceive当您为其指定了intent-filter的Intent操作被广播时,将调用该处理程序.

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