首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是粘性广播?

什么是粘性广播?
EN

Stack Overflow用户
提问于 2010-08-16 13:59:19
回答 4查看 105.8K关注 0票数 92

我在android文档中偶然发现了这个术语,其定义如下

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

什么意思?有人能用一个特定的例子来详细说明它的用法吗?我相信我们必须申请许可才能使用这种意图?为什么会这样呢?

代码语言:javascript
复制
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-16 15:46:56

如果活动使用正常广播调用onPause,则可能无法接收广播。在onResume中发起粘滞广播后,可以检查粘滞广播。

更新6/23/2020

不推荐使用粘滞广播。

.

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

实施

代码语言:javascript
复制
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.中的用法,请参见

票数 113
EN

Stack Overflow用户

发布于 2014-04-28 21:17:40

sendStickyBroadcast()执行一种称为粘滞的sendBroadcast(Intent),即在广播完成后,您发送的意图仍然存在,这样其他人就可以通过registerReceiver(BroadcastReceiver, IntentFilter)的返回值快速检索该数据。在所有其他方面,这与sendBroadcast(Intent)的行为相同。通过操作系统发送的粘滞广播的一个示例是ACTION_BATTERY_CHANGED。当您为该操作调用registerReceiver()时--即使BroadcastReceiver为空--您将获得该操作的最后一次广播的意图。因此,您可以使用它来查找电池的状态,而不必注册电池中所有未来的状态更改。

票数 11
EN

Stack Overflow用户

发布于 2015-03-22 23:53:37

粘滞广播的值是上次广播的值,当前保存在粘滞缓存中。这不是当前接收到的广播的值。我想你可以说它就像一个浏览器cookie,你可以随时访问它。根据粘滞广播方法的文档(e.g. ),粘滞广播现在已弃用

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3490913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档