sendStickyBroadcast和sendBroadcast在Android中有什么区别?
sendStickyBroadcast
和sendBroadcast
在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中已弃用。不应使用粘性广播。 它们不提供任何安全性(任何人都可以访问它们),没有任何保护(任何人都可以修改)以及其他许多问题。 推荐的模式是使用非粘性广播来报告事情已经改变,另一种机制是应用程序在需要时检索当前值
我希望这有帮助。