I am using Model-View-Presenter design pattern with event bus. I have a presenter that posts an event named OnCurrentPlaceDetailsUpdated whenever some information is updated in event bus like this:
public class HomeScreenPresenter extends BaseHomePresenter {
...
...
locationUpdatesManager.getCurrentPlace(place -> {
EventBus.getDefault().post(new OnCurrentPlaceDetailsUpdated(place));
}
);
}
now, I want that place details in some other fragment. So all I have done is inside that fragment like this:
public class PlaceListFragment implements PlaceListView {
protected EventBus eventBus;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initComponents();
}
@Override
public void onStart() {
super.onStart();
eventBus.register(this);
}
@Override
public void onStop() {
eventBus.unregister(this);
super.onStop();
}
@CallSuper
@Override
protected void initComponents() {
eventBus = EventBus.getDefault();
}
@DebugLog
@Subscribe(threadMode = ThreadMode.MAIN)
public void onCurrentPlaceUpdatedEvent(OnCurrentPlaceDetailsUpdated onCurrentPlaceUpdated) {
//got the event
}
}
Is it good or bad in terms of decoupling and design? Should I subscribe the events in presenter for PlaceListFragment and then callback to fragment using PlaceListView?
Aucun commentaire:
Enregistrer un commentaire