sendStickyBroadcast
Android和Android有什么区别sendBroadcast
?
3 回答
这是 Android SDK 所说的sendStickyBroadcast()
:
执行一个“粘性”的 sendBroadcast(Intent),这意味着您发送的 Intent 在广播完成后仍然存在,以便其他人可以通过 registerReceiver(BroadcastReceiver, IntentFilter) 的返回值快速检索该数据。在所有其他方面,这与 sendBroadcast(Intent) 的行为相同。
通过操作系统发送的粘性广播的一个示例是ACTION_BATTERY_CHANGED
. 当你要求registerReceiver()
那个动作时——即使有一个null
BroadcastReceiver
——你会得到Intent
最后一次广播的那个动作。因此,您可以使用它来查找电池的状态,而不必注册电池中所有未来的状态变化。
类型:- 本地、普通、有序和粘性
正常广播
:- 使用 sendBroadcast()
:- 异步广播
:- 任何接收者都接收到广播而不是任何特定的顺序
有序广播
:- 使用 sendOrderedBroadcast()
:- 同步广播
:- 接收者在优先级基础中接收广播
:- 我们也可以简单地中止这种类型的广播
本地广播
:- 仅在仅在同一进程内使用广播时使用
粘性广播
:- 正常的广播意图在系统发送和处理后不再可用。
:- 使用 sendStickyBroadcast(Intent)
:- 相应的意图是粘性的,这意味着您发送的意图在广播完成后仍然存在。
:- 因此,其他人可以通过 registerReceiver(BroadcastReceiver, IntentFilter) 的返回值快速检索该数据。
:- 除了这与 sendBroadcast(Intent) 相同。
sendbroadcast()
- 正常广播,但我们也可以设置优先级。
sendstickybroadcast()
- 通过此传递的意图将适用于通过代码注册的未来用户(动态接收器)。将坚持使用 android 的广播,并将重新交付或重新广播到来自任何广播接收器的未来请求
当有人使用发送粘性广播时sendstickyBroadcast(intent);
,该广播将可供使用动态接收器的未来用户使用。
但是现在你不应该使用 sendStickyBroadcast()
它已被弃用的方法
来自 Android 文档:
此方法在 API 级别 21 中已弃用。不应使用粘性广播。它们不提供安全性(任何人都可以访问它们)、不提供保护(任何人都可以修改它们)以及许多其他问题。推荐的模式是使用非粘性广播来报告发生了变化,并使用另一种机制让应用程序在需要时检索当前值
我希望这有帮助。