【问题标题】:difference between services and broadcast receivers服务和广播接收器之间的区别
【发布时间】:2010-07-17 18:36:27
【问题描述】:

我试图了解服务和广播接收器之间的区别是什么, 在我看来,他们可以做同样的事情。

例如我有一个应用程序:App1 它提供了一个名为 ToastHelloWorld 的服务,它只创建了一个 Toast 和 stopSelf()。 我使用具有操作名称的意图过滤器将其公开给其他应用程序:“com.test.HelloToast”

现在我有另一个应用程序:App2 我想隐式使用带有“com.test.HelloToast”操作的服务,所以我打电话 startService(new Intent("com.test.HelloToast"));

它有效。

当我可以使用服务做所有事情并且没有 5 秒执行限制的限制时,我为什么还要使用广播接收器?。

我知道大多数“系统事件”都是通过广播公开的,但它们不能同时作为服务意图发布吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    广播意图通常被传递给为该意图注册的所有广播接收器。 (有序 Intent 有一个例外,接收方可以中止低优先级接收方的交付)启动或绑定服务的 Intent 仅发送到一个匹配的服务实例。

    一些广播意图是粘性的。这意味着它们可能在过去已发送,并将在您的应用注册接收器时交付。

    【讨论】:

      【解决方案2】:

      当你想在后台做某事时使用服务,任何长时间运行的进程都可以使用后台服务来完成。例如,您想在应用程序关闭时播放音乐。在这种情况下,服务将在背景音乐中运行。

      BroadcastReceiver 用于在某些事件期间触发某些内容或代码。例如,事件可以在设备启动上。如果您想在设备启动、日期和时间更改等时执行某些操作...

      【讨论】:

      • 您也可以在设备启动时启动服务。
      【解决方案3】:

      最大的不同是BroadcastReceiver默认运行在主UI线程上(你可以指定不同的线程),因此它被限制为10秒的执行规则。另一方面,服务可以无限期地运行,直到操作系统决定终止它们。

      【讨论】:

        猜你喜欢
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-23
        • 2011-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多