重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天做项目时遇到了一个问题是同一个项目中两个不同的activity之间想要进行事件监听,也就是A_activity里面有了操作之后,另一个B_activity里面要马上做出改变。如果想要监听,就必须得到那个activity的对象,但显然这是没法做到的。
创新互联公司服务紧随时代发展步伐,进行技术革新和技术进步,经过十年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站设计制作、成都网站制作、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。首先想到了四大组件中的广播,通过发送广播sendBroadcast()就可以让两个毫无关系的activity产生监听联系。但是写好代码运行之后发现没有达到预想中的效果,分析后就发现不是代码写错了,而是发送普通的广播根本无法达到效果。因为,广播是在B_activity的oncreate()方法中注册的,也就是说只有进入了B界面的时候广播才能被注册,而这时候A界面的广播明显已经发送完成。sendBroadcast()也叫及时广播,也就是只有在发送广播时已经注册了的广播接受者才能收到广播。
这时候想起听过但是没用过的sendStickyBroadcast()(不知道是否可以翻译为粘性广播?)。这个广播的特性就在于它会一直保留,不管是在发送前注册的还是发送后注册的接收者都可以收到广播。用法则和sendBroadcast()一样。试验过后发现果然可行。
接着,又一个问题来了,运行发现每进入到B_activity都能收到该广播,但我只需要收到一次就可。于是在想,根据这种广播的特性,应该有提供消除广播的方法吧。在网上搜索之后发现果然有可以消除的方法,也就是:removeStickyBroadcast(intent),通过括号中的参数intent的action来区分要消除的是哪个广播。
这样,在oncreate()或onStart()方法中注册广播接收者,在onStop()方法中取消注册广播接收者并移除之前发送的粘性广播即可达到想要的效果。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。