我在我的 android 应用程序中使用了 greenrobot 的 EventBus,我非常喜欢它。
但是,现在我想通过使用演示者(MVP)将逻辑与我的片段分开。
以下是可能的,它有用吗?
分段:
public class MyFragment implements IMyFragment {
IMyPresenter mPresenter;
@Override
public View onCreateView(...) {
mPresenter = new MyPresenter(this);
}
@Override
public void onResume() {
// EventBus.getDefault().register(mPresenter); // register presenter to bus
mPresenter.resume();
}
@Override
public void onPause() {
// EventBus.getDefault().unregister(mPresenter); // unregister presenter from bus
mPresenter.pause();
}
@Override
public void doSomething() { // gets called via presenter
// ...
}
}
主持人:
public class MyPresenter implements IMyPresenter {
IMyFragment mFragment;
// constructor to inject fragment
public MyPresenter(IMyFragment mFragment) {
this.mFragment = mFragment;
}
// handle event
public void onEvent(SomeEvent event) {
mFragment.doSomething();
}
public void resume() {
EventBus.getDefault.register(this);
}
public void pause() {
EventBus.getDefault.unregister(this);
}
}
这有意义吗?
或者从总线和复杂的片段生命周期中取消注册演示者甚至是危险的?
编辑:将总线注册移动到演示者本身(感谢 Nicklas)。
对这个架构还有更多的评论吗?