Событие Eventbus (greenrobot) при отмене регистрации подписчика

У меня есть требование, когда служба должна иметь возможность отменить сетевой запрос, когда все подписчики отменили регистрацию на определенное событие. Я использую Greenrobot EventBus, и, насколько я могу судить, нет ничего встроенного, что будет отправлять событие всякий раз, когда кто-то отменяет регистрацию. Я думал, что могу переопределить метод отмены регистрации EventBus и публиковать «UnsubscribedEvent» всякий раз, когда он вызывается. Затем служба может прослушивать это событие, а когда она его получает, она может вызвать hasSubscriberForEvent, чтобы проверить, следует ли отменить запрос. Звучит ли это разумно или у кого-нибудь есть предложения получше?


person user3265561    schedule 15.06.2016    source источник


Ответы (1)


То, что вы указали в вопросе, должно работать нормально.

В качестве альтернативы, чтобы избежать осложнений, связанных с переопределением методов библиотеки и непреднамеренным испорчением вещей, вы можете сделать это следующим образом:

  1. Держите счетчик, который бы отслеживал зарегистрированных подписчиков
  2. Увеличение/уменьшение счетчика по мере появления новых подписок или отмены регистрации (используйте метод)
  3. Внутри метода отслеживания счетчика проверьте, равно ли значение счетчика 0, и отмените сетевой запрос (если он продолжается)
person AndroidMechanic - Viral Patel    schedule 15.06.2016