【问题标题】:Declaring receivers&services on the manifest在清单上声明接收者和服务
【发布时间】:2016-07-09 23:19:02
【问题描述】:

我的接收者是这样声明的:

<receiver android:name=".receiverName"
android:enabled="true"/>

这是我的服务:

<service android:name=".serviceName"
android:enabled="true"/>

但我想知道:要使它们工作,我必须在每个中添加一个 &lt;intent-filter&gt; 吗?

【问题讨论】:

    标签: android service android-manifest intentfilter android-broadcastreceiver


    【解决方案1】:

    为了使它们工作,我必须在每个中添加一个&lt;intent-filter&gt; 吗?

    这取决于您使用它们的目的。

    &lt;intent-filter&gt; 允许其他应用程序(有时是操作系统)与您的组件通信。这就是为什么你有一个 &lt;activity&gt; 和一个 &lt;intent-filter&gt; 用于 MAIN 操作和 LAUNCHER 类别的原因 - 主屏幕启动器知道查找这些并让用户能够显示这些活动。

    因此,如果您的计划是纯粹在自己的应用程序中使用该服务,则不需要&lt;intent-filter&gt;。同样的事情也适用于您的接收器。另一方面,如果您希望其他应用程序启动服务、绑定到服务或向您发送广播,那么您需要&lt;intent-filter&gt;

    【讨论】:

    • 我正在做一个提醒应用,所以我用AlarmManager设置了很多闹钟;当警报触发时,它会将意图发送到将启动服务的BroadcastReceiver。所以我不必添加&lt;intent-filter&gt;,对吗?
    • @DISSENNATORE:正确。您通常使用PendingIntentAlarmManager。这允许管理这些警报事件的 Android 部分仍然与您的接收器通信,即使您没有&lt;intent-filter&gt;
    • 非常感谢,也许这个问题很愚蠢,但你的回答对我很有帮助
    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多