我想更改粘性广播的附加内容,是否以相同的意图再次调用sendStickyBroadcast会创建新的粘性广播或替换之前的广播?
另外,我使用粘性广播来维护某些属性的状态,并将状态分享给任何想要它的人(服务和活动),是否有更好的方法在我所有的android类之间共享某些属性的状态?
答案 0 :(得分:4)
以相同的意图再次调用sendStickyBroadcast会创建一个新的粘性广播还是替换之前的广播?
如果意图为已经广播的前一个意图filter equal,它将替换当前的
我不会使用Sticky广播,因为it been deprecated from security reasons from android 5。
另外,根据我的经验 - 如果您不考虑onReceive()
可以调用的每个案例,使用粘性广播的原因可能导致非常容易出现大量错误和意外行为......
有没有更好的方法在我所有的android类之间共享某个属性的状态?
是肯定的。有更好的方法可以跨不同的应用程序组件保存状态,具体取决于具体的用例:
将状态保存为单例类中的字段(或对象)。将类实现为单例从任何其他应用程序组件提供对它的全局访问。只要你的过程还活着,单身人士的状态就会存在。
如果您需要保存状态并在应用程序进程停止后恢复它,您应该以一种持久的方式保存状态:SharedPreference是一个很好的选择保存持久的原始类型,如字符串,整数..
使用Sqlite数据库存储状态可以作为更复杂的对象和列表的选择。