【问题标题】:What is the difference between intent filter in activity and broadcast receiver?活动中的意图过滤器和广播接收器有什么区别?
【发布时间】:2015-05-02 17:44:13
【问题描述】:

谁能告诉我什么时候应该使用意图过滤器和广播接收器?

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

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

【问题讨论】:

标签: android android-intent broadcastreceiver intentfilter


【解决方案1】:

我认为您对隐式意图和广播接收器感到困惑。 Activity 中的 Intent Filter 用于接收隐式 Intent,而 Receiver 中的 Intent Filter 用于接收广播。操作系统向所有接收器传递广播消息,同时向某个活动传递隐含意图。见here

【讨论】:

    【解决方案2】:

    来自the documentation

    广播接收器是响应系统范围的组件 广播公告。许多广播来自系统——对于 例如,宣布屏幕已关闭的广播, 电池电量低,或已拍摄照片。应用程序还可以 发起广播——例如,让其他应用程序知道 一些数据已下载到设备并可供他们使用 使用。尽管广播接收器不显示用户界面, 他们可能会创建一个状态栏通知来提醒用户 广播事件发生。更常见的是,广播接收器是 只是其他组件的“网关”,旨在做一个非常 最少的工作量。例如,它可能会启动一个服务来 根据事件执行一些工作。

    您可以通过两种方式使用广播接收器。

    1) 在您的 Activity 中注册和取消注册。当您注册您的 Activity 时,您需要传递一个操作,它会处理该操作,并且当我们从我们的应用程序发送带有该操作的广播时,它将触发。

    2)第二种使用广播接收器在清单文件中注册并在意图过滤器中为清单文件中提及动作的方法。

    意图过滤器不过是简单的一句话“它只是我们在日常生活中使用的过滤器。”它将过滤调用它的操作。

    意图过滤器对于活动和广播接收器是相同的。它的主要功能是过滤动作。这取决于我们如何使用它。一个主要的例子是我们在清单文件中指定的每个应用程序

    <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    

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

    【讨论】:

    • activity中的intent-filter和广播接收器中的intent-filter有什么区别?
    • 非常感谢,我明白了。如果我想在设备启动后显示一条消息,我应该使用广播接收器或带有意图过滤器的活动吗?
    • 我可以用活动和意图过滤器而不是接收器来实现同样的事情吗?如果是,那有什么区别?
    • 是的,您可以在设备重新启动时调用活动,您可以在其中显示 UI 意味着应用程序的布局和图形视图。但是如果您只想显示 toast 消息,那么广播接收器是更好的选择。再次,我已经提到 Intent 过滤器对于活动和接收者没有什么不同。这取决于我们的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    相关资源
    最近更新 更多