android中服务和广播接收器的区别

时间:2012-01-17 05:10:07

标签: android service broadcast

我想知道服务和广播接收器之间的区别,任何人都可以指出一个可以在Android移动设备上观察到的例子。 感谢

4 个答案:

答案 0 :(得分:38)

服务:如果您想在后台执行某些操作,即使应用程序已关闭,也会始终在后台运行。您可以在单独的过程中创建此项,也可以根据需要将服务提供给其他应用程序。下载任何内容或音乐都是很好的例子

广播接收器:通常系统会发送一些信息,如果您愿意,可以通过注册收到您的应用程序。通过使用onReceive方法,当你发生这种事情时,你可以做你想做的事情。 例如,系统将在新短信到达或启动完成时发送BroadcastReceiver

这是一篇好文章:Service and BroadcastReceiver

答案 1 :(得分:26)

如果您想在后台执行某些操作,则使用

Service,可以使用后台服务完成任何长时间运行的过程。例如,您希望在应用程序关闭时播放音乐。在这种情况下,服务将在后台运行音乐。

Example of Service

当您想在某些事件中触发某些内容或代码时,会使用

BroadcastReceiver。例如,事件可以在Boot of Device上。如果您想在设备启动时执行某些操作,请更改日期和时间等...

Example of BroadcastReceiver

答案 2 :(得分:0)

广播接收器是Android组件,允许注册系统或应用程序事件。一旦发生此事件,Android将通知所有已注册的活动接收者。

服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作,或者为其他应用程序提供要使用的功能。

答案 3 :(得分:0)

我认为这可能是另一种方式。 服务 接收专门发送给您的应用程序的意图,就像活动一样。 广播接收器接收在系统范围内广播给设备上安装的所有应用的意图。

(我说 Service 有点像 Activity 的原因是:您不会在设备上安装的所有应用程序中广播一条消息说“启动 Activity MyActivity”。它仅适用于您的特定应用。)

当然,正如其他人提到的,Service 可以在后台继续运行,而 Broadcast Receiver 应该很快完成(例如,如果它运行超过 5 秒,它可能会被操作系统杀死)。在某些情况下,广播接收器仍然可以在后台运行(当应用程序关闭时)。为此,值得一提的是,实际上有两种类型的广播接收器 - Manifest-declared 和 Context-registered。它们有不同的生命周期和限制 - 前者可以在有一定限制的情况下在后台接收广播,而后者不能在后台接收广播(应用程序必须运行并处于活动状态)但对可以接收的意图类型没有限制。

必须专门调用服务和广播接收器(通过意图),但对于服务,这通常是特定调用(例如,当您的应用程序启动或用户单击某个按钮时),而对于广播接收器,它们则不是需要明确启动,因为它们将在进行相关广播时启动。

这是我的想法:

<头>
类型 显示用户界面? app关闭后还能继续运行很长时间吗? 可以在应用关闭时接收意图吗? 意图必须专门针对您的应用? 可以指定的受限意图列表?
活动 没有 没有
服务 没有 没有
清单声明的广播接收器 没有 没有 没有 1
上下文注册的广播接收器 没有 没有 没有 没有 没有

1:仅当您面向 Android 8.0 或更高版本时。如果 Intent 专门针对您的应用,则不会应用这些限制。可以在 here 中找到受限制的意图列表。

相关问题