I used ViewPager
with 3 nested Fragment
.I used EventBus
for event handling.
But in my case subscribe method gets called by multiple times. Because EventBus
gets register by multiple times.
I have used these methods for registering
a nd unregistering EventBus
@Override
public void onStop() {
if (eventBus != null) {
eventBus.unregister(this);
}
super.onStop();
}
@Override
public void onPause() {
if (eventBus != null) {
eventBus.unregister(this);
}
super.onPause();
}
@Override
public void onResume() {
if (eventBus != null) {
eventBus.register(this);
}
super.onResume();
}
My viewpager
is available in navigation drawer fragment
.
I was updated my onresume()
like this but still same thing happens
@Override
public void onResume() {
if (eventBus != null) {
if (!eventBus.isRegistered(this)) {
eventBus.register(this);
}else{
eventBus.unregister(this);
eventBus.register(this);
}
}
super.onResume();
}
These event received by multiple times thats why nested api gets called multiple times
@Subscribe
public void onEvent(Event event) {
Responce Responce = event.responce;
if (regResponce != null && regResponce.getStatus() == 0) {
if (!isGenerateReportCalled) {
isGenerateReportCalled = true;
accountManager.generateReport(parameter); // server api call get called multiple times
}
} else {
// error message
}
}
This is because you are registering event bus twice.
If event bus is not registered that time only you have to register event bus.