我正在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/