Я использую библиотеку greenrobot EventBus для отправки данных между двумя фрагментами в моем приложении для Android, и я хочу знать, в чем разница между методом register(Object b)
и методом registerSticky(Object object)
?
EventBus, регистрация и метод registerSticky
Ответы (1)
EventBus
позволяет публиковать "прикрепленные" события, и под этим EventBus
понимает события, которые "прикрепляются к шине событий" для будущего доступа.
Если вы опубликуете обычный event
, когда на момент отправки не будет subscribers
зарегистрированных, этот event
будет удален.
Тем не менее, вы можете опубликовать прикрепленный event
, даже если в данный момент нет subscribers
для его получения, и он не будет удален (если в будущем не будет опубликован другой прикрепленный event
). Когда subscriber
регистрируется с registerSticky
, также инициируется доставка последнего стикера event
.
person
Bartek Lipinski
schedule
20.01.2015
Могу ли я всегда использовать
resgisterSticky
вместо register
?
- person karoluch; 20.01.2015
Хотя
registerSticky
действует как обычный регистр (и запускает доставку последних sticky
event
), я думаю, что его следует избегать, если вы не видите серьезных причин для использования sticky event
- person Bartek Lipinski; 20.01.2015
@blipinsk Зачем избегать? Пожалуйста, уточните... Могу ли я смешать два register и registerSticky/post и postSticky?
- person powder366; 26.08.2015
@powder366 Конечно, вы можете смешать их два. Пока вы видите для этого аргументы и пока вы не имеете в виду регистрацию одного и того же объекта в одном и том же экземпляре
EventBus
с помощью обоих методов (register
и registerSticky
) одновременно. Потому что в этом случае смешивание этих двух не имеет никакого смысла (только registerSticky
даст тот же результат).
- person Bartek Lipinski; 26.08.2015
@powder366 Вам следует избегать использования
registerSticky
(для обычной регистрации в EventBus
- без серьезного случая для registerSticky
), потому что это может привести к чрезвычайно сложным ситуациям для отладки. Представьте, что у вас есть какое-то краткосрочное событие (которое может, например, представлять собой реакцию на клик пользователя). Вы могли бы получить старое событие (которое было опубликовано с помощью postSticky
относительно давно) и рассматривать его как событие, которое было опубликовано прямо сейчас.
- person Bartek Lipinski; 26.08.2015
Этот текст должен заменить это дерьмо greenrobot.org/eventbus/documentation/configuration/ чтобы такие как я поняли :)
- person Farid; 05.10.2018