1

双向使用 Otto 事件总线是一种好习惯吗?

我的意思是,将事件从控制器发送到视图,然后将视图发送到控制器?

或者它只是为了发布结果意味着它的目的只是从控制器到视图的事件?

谢谢

4

1 回答 1

4

好问题。这是我对此的看法。我使用 Otto 一段时间并双向使用它。根据我的经验,没有什么反对这样做的。我刚刚定义了一些规则来帮助我控制一切。

必须确认一对多模式。我的意思是,一个生产者通常应该通知多个订阅者。当然,在不同的时间点可以有零个或多个订阅者。但是,如果您遇到这样的情况,即按设计最大订阅者数量仅为一个,那么您尝试发送的不是“事件”,而是“命令”。对于这种情况,我会使用直接调用而不是发布事件。

要避免的另一件事应该是一种情况,即一个事件触发另一个事件,而另一个事件又会再次触发第一个事件。您可以在此处以无限事件链运行。当同一个类同时具有订阅者和生产者方法时,可能会发生这种情况。如果我有这样的类,我会尽量让这些方法保持独立。

当然,我总是使用 Android 组件的生命周期来动态注册和注销发布者和订阅者。我从onResume()andonPause()方法开始,如果需要,我会达到onStart()甚至onCreate().

于 2013-08-22T12:05:37.447 回答