EventBus, регистрация и метод registerSticky

Я использую библиотеку greenrobot EventBus для отправки данных между двумя фрагментами в моем приложении для Android, и я хочу знать, в чем разница между методом register(Object b) и методом registerSticky(Object object)?


person karoluch    schedule 20.01.2015    source источник


Ответы (1)


EventBus позволяет публиковать "прикрепленные" события, и под этим EventBus понимает события, которые "прикрепляются к шине событий" для будущего доступа.

Если вы опубликуете обычный event, когда на момент отправки не будет subscribers зарегистрированных, этот event будет удален.

Тем не менее, вы можете опубликовать прикрепленный event, даже если в данный момент нет subscribers для его получения, и он не будет удален (если в будущем не будет опубликован другой прикрепленный event). Когда subscriber регистрируется с registerSticky, также инициируется доставка последнего стикера event.

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