是否需要取消注册事件总线

Is an event bus unregister necessary

我正在 Android 中实施 MVP 模式,并且我正在使用 EventBusP来自 activity "A" 的重新发送 activity "B" 发生了一些事情以更新来自 "A".

的视图

我在构造函数中将演示者注册到 EventBus 中,但我没有看到任何可以注销它的地方。

public class PresenterA extends nucleus.presenter.Presenter<ViewA> {

    public PresenterA() {
        EventBus.getDefault().register(this);
    }

    public void onEvent(ChangesEvent e) {
        // change views
    }
}
  1. 是否有必要完全取消注册,假设演示者与应用程序一样存在(它不会在配置更改时重新创建)?
  2. 当用户离开应用程序(关闭activity "A")时,引用会被释放还是内存泄漏?
  1. 取消注册很重要,当用户离开应用程序时并不意味着资源会立即清理
  2. 由于 EventBus 持有对 Presenter 的静态引用,因此在 OS 终止进程之前它不会被释放,因此被视为泄漏。

至于 nucleus.presenter.Presenter,通常在 onTakeView(ViewType view) 上注册并在 onDropView() 上注销,因为事件处理会更改视图