我需要能够在我的Activity关闭时处理/捕获Intent。所以我正在寻找服务或BroadcastReceiver。
是否可以“接收”服务本身的意图?我试图搜索,但找不到任何有用的东西。
使用BroadcastReceiver,我不确定它在Activity之外是如何工作的。它取决于正在打开/运行的活动吗?它可以单独运行吗?假设我的Activity被Android(或任务杀手应用程序)杀死,BroadcastReceiver是否仍然接收意图并处理它们?
我使用了BroadcastReceiver作为小部件,但这次我不想使用小部件。
我的目标是让用户打开Activity来设置一些选项。从那里,他们将能够关闭活动,但我仍然能够处理由系统发出的Intents。
我仍然是Android开发的新手,所以我可能离我需要的地方太远了。
我错了吗?
答案 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运行时响应系统事件的方法。