У меня есть требование, когда служба должна иметь возможность отменить сетевой запрос, когда все подписчики отменили регистрацию на определенное событие. Я использую Greenrobot EventBus, и, насколько я могу судить, нет ничего встроенного, что будет отправлять событие всякий раз, когда кто-то отменяет регистрацию. Я думал, что могу переопределить метод отмены регистрации EventBus и публиковать «UnsubscribedEvent» всякий раз, когда он вызывается. Затем служба может прослушивать это событие, а когда она его получает, она может вызвать hasSubscriberForEvent, чтобы проверить, следует ли отменить запрос. Звучит ли это разумно или у кого-нибудь есть предложения получше?
Событие Eventbus (greenrobot) при отмене регистрации подписчика
Ответы (1)
То, что вы указали в вопросе, должно работать нормально.
В качестве альтернативы, чтобы избежать осложнений, связанных с переопределением методов библиотеки и непреднамеренным испорчением вещей, вы можете сделать это следующим образом:
- Держите счетчик, который бы отслеживал зарегистрированных подписчиков
- Увеличение/уменьшение счетчика по мере появления новых подписок или отмены регистрации (используйте метод)
- Внутри метода отслеживания счетчика проверьте, равно ли значение счетчика
0
, и отмените сетевой запрос (если он продолжается)
person
AndroidMechanic - Viral Patel
schedule
15.06.2016