奥托公交活动,单一订阅应该只打电话

时间:2014-07-24 19:36:53

标签: android otto

我在这里使用了otto事件总线作为解释。它很棒。

http://square.github.io/otto/

https://code.google.com/p/guava-libraries/wiki/EventBusExplained

今天我意识到如果我创建事件并在2个地方订阅它,它们都会被调用。

更清楚:

我有使用事件总线进行内部通信的jar。 当我在我的应用程序中使用这个jar时,我可以在事件总线上注册并捕获事件。

如何避免这种情况?

2 个答案:

答案 0 :(得分:3)

看起来它按预期工作。您可能想要创建两个不同的事件来解决您的问题。

答案 1 :(得分:1)

如果您正在注册多个目的地并且他们都在活动总线上订阅特定事件,那么当该事件发布时,所有这些目的地都会被通知。这是奥托公交车的工作方式。它遵循发布/订阅pattern

重要的是要注意,这不是因为您已经注册到活动总线,您将获得所有活动发布到该总线。您还需要订阅该活动。

好的用例,你真的需要注册那辆特定的公交车吗?好像您不希望收到有关该库中使用的特定事件的通知。为什么不创建第二个Bus实例?然后,您可以使用它在您的应用程序内进行通信,而不会与您的图书馆通信冲突。这将允许您订阅库使用的相同事件,但只有您的应用程序将注册到该应用程序。这会产生我认为你正在寻找的分离。总而言之,您拥有用于图书馆通信的原始总线和用于您的应用程序通信的第二条总线。

也许我错过了你在这里尝试做的事情。