活动中的意图过滤器和广播接收器有什么区别?

4

请问什么时候应该使用意图过滤器和广播接收器?

<activity>
          <intent-filter></intent-filter>
</activity>

并且

<receiver>
      <intent-filter></intent-filter>
 </receiver>

1
http://developer.android.com/guide/components/intents-filters.html - CommonsWare
2个回答

4
文档中可以了解到:
广播接收器是响应系统级广播通知的组件。许多广播都来自于系统,例如屏幕关闭、电池电量低或拍摄照片等广播。应用程序也可以发起广播,例如通知其他应用程序设备上已下载某些数据可供使用。尽管广播接收器不显示用户界面,但它们可以创建状态栏通知以在广播事件发生时提醒用户。然而,广播接收器更常见的是作为其他组件的“网关”,旨在完成非常少量的工作。例如,它可能会根据事件启动一个服务来执行一些工作。
您可以通过两种方式使用广播接收器。
1)在您的活动中注册和注销。当您在活动中注册时,需要传递一个操作来处理它,并且当我们从应用程序发送具有该操作的广播时,它将触发。
2)第二种使用广播接收器的方法是在清单文件中注册并在意图过滤器中指定操作。
意图过滤器就是简单的过滤器,它会过滤调用它的操作。
意图过滤器对于活动和广播接收器是相同的。其主要功能是过滤操作。它取决于我们如何利用它。一个重要的例子是在我们的每个应用程序中,在清单文件中指定了。
<intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

在我们的启动活动中,它表示这个活动是我们的启动活动,并且将在应用程序启动时首先运行。如果您没有指定它,则您的应用程序将不会启动。此外,我们不能在广播接收器的意图过滤器中指定这些类型的过滤器。它们不是应用程序的启动器。

活动中的意图过滤器和广播接收器中的意图过滤器有什么区别? - Chandi Gorom
非常感谢,我明白了。如果我想在设备启动后显示一条消息,我应该使用广播接收器还是带有意图过滤器的活动? - Chandi Gorom
您可以注册一个接收器,在设备启动时触发。您需要在意图过滤器中注册ACTION_BOOT_COMPLETED。由于您的广播接收器具有上下文,因此可以使用它显示toast消息。 - Jay Shah
我能否使用activity和intent-filter来实现同样的功能,而不是使用receiver?如果可以,那么它们之间有什么区别? - Chandi Gorom
1
是的,当设备重新启动时,您可以调用活动,在其中显示应用程序的布局和图形视图。但是,如果您只想显示toast消息,则广播接收器是更好的选择。再次强调,我已经提到Intent过滤器对于活动和接收器没有区别。这取决于我们的需求。 - Jay Shah

4

我认为你对隐式意图和广播接收器感到困惑。Activity中的Intent Filter用于接收隐式意图,而Receiver中的Intent Filter用于接收广播。操作系统向所有接收器发送广播消息,而向特定一个活动发送隐式意图。请参见这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接