Android 是否需要注销事件总线
我正在安卓系统中实现MVP模式,我正在使用EventBus让活动“A”的p报告者知道活动“B”发生了什么,以更新“A”的视图 我在构造函数中向EventBus inside注册了演示者,但我看不到任何可以取消注册的地方Android 是否需要注销事件总线,android,memory-leaks,event-bus,Android,Memory Leaks,Event Bus,我正在安卓系统中实现MVP模式,我正在使用EventBus让活动“A”的p报告者知道活动“B”发生了什么,以更新“A”的视图 我在构造函数中向EventBus inside注册了演示者,但我看不到任何可以取消注册的地方 public class PresenterA extends nucleus.presenter.Presenter<ViewA> { public PresenterA() { EventBus.getDefault().register
public class PresenterA extends nucleus.presenter.Presenter<ViewA> {
public PresenterA() {
EventBus.getDefault().register(this);
}
public void onEvent(ChangesEvent e) {
// change views
}
}
公共类presenter扩展了nucleus.presenter.presenter{
公共演讲者(){
EventBus.getDefault()寄存器(此);
}
公共无效事件(变更事件e){
//改变看法
}
}
至于
nucleus.presenter.presenter
在onTakeView(ViewType视图)
上注册和在onDropView()上注销是很常见的
由于事件处理更改了视图应用程序直到Android根据杀死它才真正结束,但是拥有一个无法消亡的引用在视图层次结构(活动/片段)中是一个问题。EventBus.getDefault()确实是一个静态引用,但它保留了对演示者的引用,该演示者在活动结束时与视图分离。这被认为是内存泄漏吗?另外,如果您不注销,在某个总线事件处理程序中获得的某些UI代码可能会尝试调用已回收或已处置的视图