Отто - Продюсер против публикации
Может кто-нибудь дать мне пример использования Produce? Я не совсем понимаю его назначение, так как использую исключительно Publish.
Разница лишь в том, что с Produce он отправит обратный вызов немедленно, когда класс подпишется на шину? Таким образом, вы можете произвести что-то до регистрации класса и получить ли этот класс результат?
1 ответ
Подобно тому, что прокомментировал CommonsWare:
Согласно документам Отто ( http://square.github.io/otto/), @Produce
аннотация предназначена для предоставления новым подписчикам текущего состояния какого-либо события. Чтобы увидеть необходимость этой функции, рассмотрите следующую последовательность:
- ProducerA публикует некоторые действительно важные данные
- Некоторое время спустя SubscriberA подписывается на те же действительно важные данные
Без использования @Produce
По функциональности SubscriberA не получит действительно важные данные. Однако, если производитель "действительно важных данных" определен, такая же последовательность становится:
- ProducerA публикует некоторые действительно важные данные
- Некоторое время спустя SubscriberA подписывается на те же действительно важные данные
- SubscriberA получает данные от производителя действительно важных данных
Поэтому производители могут предоставлять информацию подписчикам "позднего присоединения", которые в противном случае пропустили бы информацию, которая была опубликована до регистрации подписчика.