我已经使用了 otto 事件总线作为解释这里。它工作得很好。
https://code.google.com/p/guava-libraries/wiki/EventBusExplained
今天我意识到,如果我创建事件并在 2 个地方订阅它,两者都会被调用。
为了更清楚这一点:
我有使用事件总线进行内部通信的 jar。当我在我的应用程序中使用这个 jar 时,我可以在事件总线上注册并捕获事件。
如何避免这种情况?
我已经使用了 otto 事件总线作为解释这里。它工作得很好。
https://code.google.com/p/guava-libraries/wiki/EventBusExplained
今天我意识到,如果我创建事件并在 2 个地方订阅它,两者都会被调用。
为了更清楚这一点:
我有使用事件总线进行内部通信的 jar。当我在我的应用程序中使用这个 jar 时,我可以在事件总线上注册并捕获事件。
如何避免这种情况?
看起来它正在按预期工作。您可能想要创建两个不同的事件来解决您的问题。
如果您要注册多个目的地并且它们都订阅事件总线上的特定事件,则所有这些目的地都会在该事件发布时通知。这是 Otto 巴士的预期工作方式。它遵循发布/订阅模式。
请务必注意,并不是因为您已注册到事件总线,您才会将所有事件发布到该总线。您还需要订阅该事件。
好吧,你的用例,你真的需要注册到那个特定的总线吗?似乎您不想被通知该库中正在使用的特定事件。为什么不创建第二个 Bus 实例?然后,您可以使用它仅在您的应用程序内进行通信,而不会与您的库通信冲突。这将允许您订阅库使用的相同事件,但只有您的应用程序会注册到该应用程序。这将产生我认为您正在寻找的分离。因此,总而言之,您将拥有用于库通信的原始总线和用于应用程序通信的第二条总线。
也许我错过了您在这里尝试做的事情。