sendStickyBroadcast和sendBroadcast在Android中有什么区别?

sendStickyBroadcastsendBroadcast在Android中有什么区别?

以下是Android SDK关于sendStickyBroadcast()

执行一个“sticky”的sendBroadcast(意图),意味着您发送的Intent在广播完成后仍然保留,以便其他人可以通过registerReceiver(BroadcastReceiver,IntentFilter)的返回值快速检索该数据。 在所有其他方面,这与sendBroadcast(Intent)的行为相同。

通过操作系统发送的粘性广播的一个例子是ACTION_BATTERY_CHANGED 。 当你为那个动作调用registerReceiver()时,即使是一个null BroadcastReceiver ,你也得到了最后一次广播的Intent 。 因此,您可以使用它来查找电池的状态,而无需注册电池中所有将来的状态变化。

types : – 本地,正常,有序和粘滞

普通广播

: – 使用sendBroadcast()

: – asynchronous广播

: – 任何收件人收到广播没有任何特定的顺序

有序广播

: – 使用sendOrderedBroadcast()

: – 同步广播

: – 接收机收到广播优先基地

: – 我们也可以简单地放弃这种types的广播

本地广播

: – 仅在广播仅在同一进程内使用时使用

粘滞广播

: – 正常的广播意图在系统发送和处理后不再可用。

: – 使用sendStickyBroadcast(意图)

: – 相应的意图是粘性的,这意味着你发送的意图在广播完成后仍然存在。

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

: – 除此之外sendBroadcast(意图)。

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

sendstickybroadcast() – 通过这个的意图将坚持为正在通过代码(dynamic接收器)注册的未来用户。 将继续使用android的广播,将被重新传送或重新播放给任何广播接收机的未来请求

当有人使用sendstickyBroadcast(intent);发送粘性广播时sendstickyBroadcast(intent); 那么这个广播将可用于使用dynamic接收器的未来用户。

但现在你不应该使用sendStickyBroadcast()方法,它已经被弃用了

从Android文档:

此方法在API级别21中已弃用。不应使用粘性广播。 它们不提供任何安全性(任何人都可以访问它们),没有任何保护(任何人都可以修改)以及其他许多问题。 推荐的模式是使用非粘性广播来报告事情已经改变,另一种机制是应用程序在需要时检索当前值

我希望这有帮助。