我有一个关于事件总线设计模式与机器人活动/片段/服务相结合的具体问题。
到目前为止,我理解的是:当使用我创建的事件总线时,让我们为整个应用程序创建一个单一的事件总线(单例设计模式)。现在,我可以让单个活动/片段/服务在事件总线上发布一个事件,而事件总线将消息传播到订阅此特定事件的所有其他活动/片段/服务。这样,所有其他活动/片段/服务都可以对此特定事件作出反应。为了使所有活动/片段/服务能够使用事件总线,它们必须在总线中注册(最好在其onCreate*()-methods中注册),如果它们即将被停止/取消/销毁,则应该取消注册。
这就引出了我的问题:假设我想实现一个全新的actionbar (不是android或者sherlock,我是说从头到尾)。就我的理解而言,我可以使用事件总线实现actionbar。因此,我将有我的主要活动,按钮顶部的活动-布局,每个按钮有自己的onClick-方法实现。对于每个按钮,只要单击相关按钮,就会有一个可见的片段。现在,在每个onClick-方法(每个按钮一个)中,我可以将一个事件发布到事件总线,然后总线将其扩展到片段。然后,这些片段根据附加的事件信息检查它们是否应该可见。
现在的问题是,每个片段都需要首先在事件总线中注册,因此为了使其工作,每个片段onCreate()-method必须至少调用一次,对吗?
谢谢你对此的洞察力!
斯特芬
发布于 2014-08-26 19:07:43
为了使所有活动/片段/服务能够使用事件总线,它们必须向总线注册(最好在它们的onCreate*()-methods中)
onCreate()可能是合适的位置,也可能不是合适的位置,特别是对于活动和片段。
如果他们即将被停止/取消/销毁,他们应该注销。
这就是为什么onCreate()可能是注册的合适地点,也可能不是合适的地方。注册和不注册应该发生在配对的生命周期方法中。
假设我想实现一个全新的actionbar (不是android的或者神探夏洛克或者其他的,我的意思是从零开始)
在袖口上,注意您描述中的任何内容都不需要这一点,因为所有这些都可以通过标准操作条或它的后端来完成。
现在,在每个onClick-方法(每个按钮一个)中,我可以将一个事件发布到事件总线,然后总线将其扩展到片段。然后,这些片段根据附加的事件信息检查它们是否应该可见。
或者,活动可以告诉片段“哟,你的按钮被点击了”。事件总线非常适合于发送方与接收方之间没有直接连接的情况(例如服务到活动),或者事件可能会引起多个方面的兴趣。在这种情况下,使用事件总线似乎是不必要的,因为活动已经知道其片段。
每个片段都需要首先在事件总线中注册,因此为了使其工作,每个片段onCreate()-method必须至少调用一次,对吗?
对,是这样。
https://stackoverflow.com/questions/25512525
复制相似问题