广泛的问题
您如何处理没有明确退订位置的情况?
具体问题
在 Android 的 BroadcastReceiver 中,没有可以调用 EventBus 取消订阅的生命周期结束方法。这个 BroadcastReceiver 可以被多次调用。由于没有取消注册,该事件在第一个事件之后以指数方式(实际上是算术)触发更多动作,因为我们在初始化方法(onReceive)中再次注册。
我猜这种情况很常见,可以在这里讨论。
潜在的解决方案
我们正在检查是否有特定事件的现有订阅者,只有在没有订阅者时才在总线上注册。
这似乎是骇人听闻且不可靠的方法。举个例子,如果代码的另一部分开始依赖相同的事件并且也必须注册怎么办?我们已经有一个来自新位置的公共汽车上的订阅者,我们的旧代码不会自行注册。我们的逻辑将失败,或者必须变得更加复杂,并且与订阅者的数量等紧密耦合。
如果问题不容易理解,请指出,我可能会尝试另一种解释方式。