双向使用Otto事件总线是一种好习惯吗?
我的意思是,从控制器发送事件到视图,并查看控制器?
或者只是意味着发布结果意味着它的目的只是从控制器到视图的事件?
由于
答案 0 :(得分:4)
好问题。以下是我对此的看法。我使用Otto一段时间并双向使用它。根据我的经验,没有什么可以反对这样做。我刚刚定义了一些规则来帮助我控制一切。
必须确认一对多模式。我的意思是,一个制作人通常应该通知多个订阅者。当然,在不同的时间点可以有零个或多个订户。但是如果你有一个案例,其中 by-design 的最大订阅者数量只有一个,那么你试图发送一个“命令”,而不是“事件”。对于这种情况,我会使用直接电话而不是发布活动。
另一件要避免的事情应该是一种情况,当一个事件触发另一个事件时,它又会再次触发第一个事件。您可以在此处运行无限事件链。当同一个类同时具有subscriber和producer方法时,可能会发生这种情况。如果我有这样的类,我会尽量保持这些方法的独立性。
当然,我总是使用Android组件的生命周期来动态注册和取消注册发布者和订阅者。我从onResume()
和onPause()
方法开始,如果需要,我会前往onStart()
甚至onCreate()
。