粘性广播重播

时间:2014-11-11 14:56:47

标签: android broadcastreceiver broadcast android-broadcast sticky-broadcast

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

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

1 个答案:

答案 0 :(得分:4)

  

以相同的意图再次调用sendStickyBroadcast会创建一个新的粘性广播还是替换之前的广播?

如果意图为已经广播的前一个意图filter equal,它将替换当前的

我不会使用Sticky广播,因为it been deprecated from security reasons from android 5

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

  

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

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

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

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

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