是否需要取消注册事件总线
Is an event bus unregister necessary
我正在 Android 中实施 MVP 模式,并且我正在使用 EventBus 让 P来自 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
}
}
- 是否有必要完全取消注册,假设演示者与应用程序一样存在(它不会在配置更改时重新创建)?
- 当用户离开应用程序(关闭activity "A")时,引用会被释放还是内存泄漏?
- 取消注册很重要,当用户离开应用程序时并不意味着资源会立即清理
- 由于 EventBus 持有对 Presenter 的静态引用,因此在 OS 终止进程之前它不会被释放,因此被视为泄漏。
至于 nucleus.presenter.Presenter
,通常在 onTakeView(ViewType view)
上注册并在 onDropView()
上注销,因为事件处理会更改视图
我正在 Android 中实施 MVP 模式,并且我正在使用 EventBus 让 P来自 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
}
}
- 是否有必要完全取消注册,假设演示者与应用程序一样存在(它不会在配置更改时重新创建)?
- 当用户离开应用程序(关闭activity "A")时,引用会被释放还是内存泄漏?
- 取消注册很重要,当用户离开应用程序时并不意味着资源会立即清理
- 由于 EventBus 持有对 Presenter 的静态引用,因此在 OS 终止进程之前它不会被释放,因此被视为泄漏。
至于 nucleus.presenter.Presenter
,通常在 onTakeView(ViewType view)
上注册并在 onDropView()
上注销,因为事件处理会更改视图