代码之家  ›  专栏  ›  技术社区  ›  Ryan Alford

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

  •  2
  • Ryan Alford  · 技术社区  · 15 年前

    当我的活动结束时,我需要能够处理/捕捉意图。所以我在看一个服务或者一个广播接收器。

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

    有了广播接收器,我不太确定它在活动之外是如何工作的。是否取决于正在打开/运行的活动?它能自己运行吗?假设我的活动被Android(或任务杀手应用程序)杀死,广播接收器是否仍然收到意图并进行处理?

    我已将广播接收器用作小部件,但这次不想使用小部件。

    我的目标是让用户打开活动来设置一些选项。从那里,他们可以结束活动,但我仍然可以处理系统发出的意图。

    我对Android开发还比较陌生,所以我可能离我需要的地方很远。

    我是不是做错了?

    1 回复  |  直到 15 年前
        1
  •  8
  •   Reto Meier    15 年前

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

    如果您注册 intent-filter 标记要处理的广播意图 receiver manifest节点,它将接收所有匹配的广播意图,即使您的应用程序进程完全停止(没有活动或服务)。

    下面的代码片段显示了如何将广播接收器添加到清单中,以独立于正在运行的活动或服务来侦听广播意图。

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

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

    注意:有些系统广播不能通过这种方式捕获,但一般来说,这是在没有活动运行时响应系统事件的方法。