0

我想更改粘性广播的附加内容,是否以相同的意图再次调用 sendStickyBroadcast 会创建新的粘性广播或替换以前的粘性广播?

另外,我使用粘性广播来维护某些属性的状态并将状态共享给任何想要它的人(服务和活动),是否有更好的方法在我的所有 android 类之间共享某些属性的状态?

4

1 回答 1

4

另一个具有相同意图的 sendStickyBroadcast 调用是否会创建新的粘性广播或替换之前的广播?

如果 Intent 的过滤器等于已广播的前一个过滤器,它会替换当前的过滤器

我不会使用 Sticky 广播,因为出于安全原因,它已被 android 5 弃用

另外,根据我的经验-如果您不考虑onReceive()可以调用的每种情况,出于您描述的原因使用粘性广播可能会导致非常容易出现大量错误和意外行为...

有没有更好的方法在我所有的 android 类之间共享某些属性的状态?

是的。有很多更好的方法可以跨不同的应用程序组件保存状态,具体取决于具体的用例:

  • 将状态保存为单例类中的字段(或对象)。将类实现为单例提供从任何其他应用程序组件对其的全局访问。只要您的进程还活着,单例状态就会保存..

  • 如果您需要保存状态并在应用程序进程停止后恢复它,您应该以一种持久的方式保存状态: SharedPreference是保存持久原始类型(如字符串、整数)的好选择。

  • 使用 Sqlite 数据库存储状态可能是更复杂的对象和列表的选择。

于 2014-11-11T15:31:23.877 回答