我正在android中实现mvp模式,并使用eventbus让活动“a”中的演示者知道在活动“b”中发生了一些事情,以便从“a”更新视图。
我在constructor中将演示者注册到了eventbus inside,但是我看不到任何可以注销它的地方。

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

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

    public void onEvent(ChangesEvent e) {
        // change views
    }
}

如果演示者与应用程序一样长(在配置更改时不会重新创建),是否有必要完全取消注册?
当用户离开应用程序(关闭活动“a”)时,引用将被释放还是内存泄漏?

最佳答案

注销是很重要的,当用户离开应用程序时,并不意味着资源会立即被清除
由于eventbus持有对presenter的静态引用,因此在os终止进程并因此被视为泄漏之前,它不会被释放。
对于nucleus.presenter.Presenter来说,在onTakeView(ViewType view)上注册和在onDropView()上注销是很常见的,因为事件处理更改了视图

关于android - 是否需要注销事件总线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30486497/

10-13 08:22