2010-07-17 66 views
5

即时通讯试图了解服务和广播接收机之间的区别是什么, 因为我看到它们可以做同样的事情。服务和广播接收机之间的区别

例如,我有一个应用程序:App1 提供一个名为ToastHelloWorld的服务,它只创建一个Toast和stopSelf()。 我使用意图过滤器与动作的名称暴露在其他应用程序:“com.test.HelloToast”

现在我有另一个应用:应用2 我想隐式使用与行动“com.test的服务。 HelloToast“,所以我打电话 startService(new Intent(”com.test.HelloToast“));

它的工作原理。

为什么我会使用广播接收器时,我可以做所有的服务,并没有限制5秒的执行限制?

我知道大多数“系统事件”是通过广播公开的,但是它们不仅仅是作为服务内容发布吗?

回答

4

广播意图通常发送到所有 BroadcastReceivers注册该意图。 (对于订购意图,例外情况是接收方可以中止对较低优先级接收方的交付)启动或绑定服务的意向仅发送到一个匹配服务实例。

一些广播意图很粘。这意味着它们可能在过去发送过,并会在应用程序注册接收器时发送。

3

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

当您想在某些事件中触发某些内容或代码时使用BroadcastReceiver。例如,事件可以在Boot of Device上。如果你想在设备启动时执行某些操作,日期和时间等发生变化......

+1

您也可以在设备启动时启动服务。 – 2015-02-27 21:07:56

3

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