什么是便利广播?

我在android文档中遇到了这个术语,并带有相应的定义

这些广播的数据在完成后由系统保存,以便客户可以快速检索该数据,而不必等待下一个广播。

这是什么意思? 有人可以用一个特定的例子来阐述它的用法吗? 我相信我们必须要求使用这个意图的许可? 为什么这样?

<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents. 

请阅读Mark Murphy的解释: Android中的sendStickyBroadcast和sendBroadcast有什么区别

以下是一个如何使用粘性广播的抽象例子:

 Intent intent = new Intent("some.custom.action"); intent.putExtra("some_boolean", true); sendStickyBroadcast(intent); 

如果您在正在冻结的活动(onPause)中收听广播,则可能会错过实际活动。 这使您可以在广播被触发后检查(onResume)。

编辑:更多关于粘性广播…

还请检查removeStickyBroadcast(Intent) ,以及API Level 5 + isInitialStickyBroadcast()以便在Receiver的onReceive

希望有所帮助。

请注意,粘滞广播是沉重的系统,并不鼓励。 请在Android开发者小组讨论“Sticky Broadcasts and Concurrency选项”中阅读hackbod的注释。

@Shouvik,请指定您正在考虑使用StickyBroadcasts的确切场景。 有人可能会提出一个替代解决scheme。

粘性广播的值是上次广播的值,当前保存在粘性caching中。 这不是现在收到的广播的价值。 我想你可以说它就像一个浏览器cookie,你可以随时访问。 粘性广播现已弃用:

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

sendStickyBroadcast()执行一个名为sticky的sendBroadcast(Intent) ,也就是说你发送的Intent在广播完成后停留在附近,这样其他人可以通过registerReceiver(BroadcastReceiver, IntentFilter)的返回值来快速检索这些数据。 在所有其他方面,这与sendBroadcast(Intent)行为相同。 通过操作系统发送的粘性广播的一个例子是ACTION_BATTERY_CHANGED 。 当你为那个动作调用registerReceiver()时,即使是一个空的BroadcastReceiver ,你也得到了最后一次广播的Intent。 因此,您可以使用它来查找电池的状态,而无需注册电池中所有将来的状态变化。

在系统发送和处理之后,正常的广播意图不再可用。 如果您使用sendStickyBroadcast(Intent)方法,则意图是粘性的,这意味着您要发送的意图在广播完成后仍然存在。

你参考我的博客: 在这里input链接描述