gpt4 book ai didi

android - 事件总线 : How to deal with no clear unsubscribe point?

转载 作者:行者123 更新时间:2023-11-30 02:00:49 25 4
gpt4 key购买 nike

广泛的问题

您如何处理没有明确退订位置的情况?

具体问题

在 Android 的 BroadcastReceiver 中,没有可以调用 EventBus 的取消订阅的生命周期结束方法。这个 BroadcastReceiver 可以被调用多次。由于没有取消注册,因此事件在第一个事件之后以指数方式(实际上是算术)触发更多操作,因为我们在初始化方法 (onReceive) 中再次注册。

我猜这种情况很常见,可以在这里讨论。

可能的解决方案

我们正在检查特定事件是否存在订阅者,只有在没有订阅者时才注册到总线上。

这似乎是一种骇人听闻且不可靠的方法。举个例子,如果代码的另一部分开始依赖同一个事件并且也必须注册怎么办?我们已经有一个来自新位置的公共(public)汽车上的订户,我们的旧代码不会自行注册。我们的逻辑将会失败,或者必须变得更加复杂并与订阅者数量等紧密耦合。

如果问题不容易理解,请指出,我也许会尝试用不同的方式来解释。

最佳答案

广播接收器由 Android 创建以处理一个广播。它们在处理 UI 的主线程上运行。因此,它们应该运行得非常快,绝对不要执行任何长时间运行的任务或访问网络。

鉴于此,他们在事件总线上注册根本没有意义。

相反,您的广播接收器应该只在 Android 服务上开始一些工作,该服务具有定义的生命周期,是注册事件总线的理想选择。

关于android - 事件总线 : How to deal with no clear unsubscribe point?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com