我在android文档中偶然发现了这个术语,其定义如下
这些广播的数据在完成后由系统保留,因此客户端可以快速检索该数据,而不必等待下一次广播。
什么意思?有人能用一个特定的例子来详细说明它的用法吗?我相信我们必须申请许可才能使用这种意图?为什么会这样呢?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
发布于 2010-08-16 15:46:56
如果活动使用正常广播调用onPause
,则可能无法接收广播。在onResume
中发起粘滞广播后,可以检查粘滞广播。
更新6/23/2020
不推荐使用粘滞广播。
此方法在API级别21中已弃用。不应使用粘滞广播。它们没有提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们),以及许多其他问题。推荐的模式是使用非粘性广播来报告发生了变化,并使用另一种机制让应用程序在需要时检索当前值。
实施
Intent intent = new Intent("some.custom.action");
intent.putExtra("some_boolean", true);
sendStickyBroadcast(intent);
资源
What is the difference between sendStickyBroadcast and sendBroadcast in Android?
有关接收方onReceive
.中的用法,请参见
removeStickyBroadcast(Intent)
on API Level 5 +,isInitialStickyBroadcast()
发布于 2014-04-28 21:17:40
sendStickyBroadcast()
执行一种称为粘滞的sendBroadcast(Intent)
,即在广播完成后,您发送的意图仍然存在,这样其他人就可以通过registerReceiver(BroadcastReceiver, IntentFilter)
的返回值快速检索该数据。在所有其他方面,这与sendBroadcast(Intent)
的行为相同。通过操作系统发送的粘滞广播的一个示例是ACTION_BATTERY_CHANGED
。当您为该操作调用registerReceiver()
时--即使BroadcastReceiver
为空--您将获得该操作的最后一次广播的意图。因此,您可以使用它来查找电池的状态,而不必注册电池中所有未来的状态更改。
发布于 2015-03-22 23:53:37
粘滞广播的值是上次广播的值,当前保存在粘滞缓存中。这不是当前接收到的广播的值。我想你可以说它就像一个浏览器cookie,你可以随时访问它。根据粘滞广播方法的文档(e.g. ),粘滞广播现在已弃用
此方法在API级别21中已弃用。不应使用粘滞广播。它们没有提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们),以及许多其他问题。推荐的模式是使用非粘滞广播来报告发生了变化,并使用另一种机制让应用程序在需要的时候检索当前值。
https://stackoverflow.com/questions/3490913
复制相似问题