Я использую EventBus от greenrobot в своих приложениях для Android, и мне это очень нравится.
Однако теперь я хотел бы отделить логику от своих фрагментов с помощью презентаторов (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);
}
}
Имеет ли это смысл?
Или это даже опасно с точки зрения отмены регистрации докладчика в шине и сложного жизненного цикла фрагмента?
Редактировать: регистрация шины перемещена на самого докладчика (спасибо Никласу).
Есть еще комментарии по этой архитектуре?