什么是便利广播?
我在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链接描述