我使用ViewPager
了 3 个嵌套的Fragment
.I 用于EventBus
事件处理。但在我的情况下,订阅方法被多次调用。因为EventBus
被多次注册。我已经使用这些方法进行registering
注销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();
}
我viewpager
在navigation drawer fragment
. 我onresume()
像这样更新了我,但仍然发生同样的事情
@Override
public void onResume() {
if (eventBus != null) {
if (!eventBus.isRegistered(this)) {
eventBus.register(this);
}else{
eventBus.unregister(this);
eventBus.register(this);
}
}
super.onResume();
}
这些事件被多次接收,这就是为什么嵌套 api 被多次调用
@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
}
}