sendStickyBroadcast和Android中的sendBroadcast之间的区别

问题描述:

Android中的sendStickyBroadcastsendBroadcast有什么区别?sendStickyBroadcast和Android中的sendBroadcast之间的区别

Here is what the Android SDK says about sendStickyBroadcast()

执行sendBroadcast(意向),其 是“粘性”,这意味着你 是在 播出后各地发送住宿的意图是完整的,让别人 能够快速检索数据通过 返回值为 registerReceiver(BroadcastReceiver, IntentFilter)。在所有其他方面, 的行为与 sendBroadcast(意图)相同。

通过操作系统发送的粘性广播的一个示例是ACTION_BATTERY_CHANGED。当您拨打registerReceiver()进行该操作时 - 即使是nullBroadcastReceiver - 您将获得上次播放的Intent。因此,您可以使用它来查找电池的状态,而无需注册电池中所有将来的状态变化。

+6

意图是多么粘性?当你第二次调用registerReceiver时,它是否会再次返回相同的意图? (假设没有额外的意图) – phreed 2012-04-03 16:57:12

+0

粘性意图会发生什么:断电?屏幕关闭?等等。 – phreed 2012-04-03 16:58:39

+20

@phreed:“当你第二次调用registerReceiver时,它是否会再次返回相同的意图?” - 是的。 “关机?” - 它们会消失,就像RAM中的任何东西一样。 “屏蔽掉?” - 没有效果。 – CommonsWare 2012-04-03 19:38:25

类型: - 本地,正常,有序和粘

正常播出

: - 使用sendBroadcast()

: - 异步广播

: - 任何接收器收到广播没有任何特定的订单

有序广播

: - 使用sendOrderedBroadcast()

: - 同步广播

: - 接收器接收在优先级基数广播

: - 我们也可以简单地在这种类型的中止广播

本地广播

: - 只使用在广播时,里面只有同样的过程

置顶广播

: - 正常播出的目的不是提供任何更多之后,为发送和系统处理。

: - 使用sendStickyBroadcast(意向)

: - 相应的意图是粘性的,这意味着意向您发送入住后各地广播完成。

: - 因为这些,其他人可以通过registerReceiver(BroadcastReceiver,IntentFilter)的返回值快速检索数据。

: - 与sendBroadcast(Intent)相同。

sendbroadcast() - 正常广播,但我们也可以设置优先级。

sendstickybroadcast() - 传递的意图对于通过代码(动态接收器)注册的未来用户来说是坚持的。 将与Android的坚持,并重新递交或广播重新广播到将来的请求从任何广播接收机

当某人向使用sendstickyBroadcast(intent);那么广播将可用于未来的用户粘性广播谁正在使用动态接收器。

但是现在,你不应该使用sendStickyBroadcast()方法不建议使用

从Android文档:

这种方法已被废弃的API级别21.持久广播应该 不能使用。它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。该 推荐的方式是使用非粘性广播向大家报告, 东西已经改变,与其他机制的任何需要的时候

我希望这有助于应用程序检索 当前值。