阅读即时广播时,可以查明广播是多久前发送的?
粘性广播的优点是可以晚到聚会但仍可以读取数据,但是知道发送时间是很高兴的。
具体来说,我正在尝试将其用于电池温度,但这在第一次阅读粘性广播时在各种情况下都可能有用(第二次以后可以在发送时直接接收,所以这个问题解决了。
我彻底搜索了文档和SO,但找不到任何地方要问或回答的问题。这可能意味着不可能,但是无论如何我都在尝试。会是一个整洁的功能-还是没有?
使用粘性广播的最佳示例如下:
Intent intent = new Intent("some.custom.action");
intent.putExtra("some_boolean", true);
sendStickyBroadcast(intent);
如果您正在冻结的活动中收听此广播(onPause),则可能会错过实际事件。这使您可以在广播被广播之后检查广播(onResume)。
如果您要使用它作为电池温度,是否曾尝试使用ACTION_BATTERY_CHANGED
基本上,粘性广播的值是上次广播的值,当前保存在粘性缓存中。这不是当前接收到的广播的值。我想您可以说它就像可以随时访问的浏览器cookie。我建议您检出isInitialStickyBroadcast()以在接收器的onReceive
中使用。现在,根据粘性广播方法here的文档,粘性广播已被弃用。
此方法在API级别21中已弃用。不应使用粘性广播。它们不提供安全性(任何人都可以访问它们),不提供保护(任何人都可以对其进行修改)以及许多其他问题。推荐的模式>是使用非粘性广播来报告已发生更改,另外一种>可以在需要时让应用检索当前值的机制。
希望有所帮助。