我正在使用GreenRobot's EventBus 3.0版。还有一个部分on the docs表示我们可以发布粘性事件,并接收我们必须订阅的事件:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {
// Do something with the message.
// Is the event removed from the bus on this method?
}
所以,我的问题是:订阅者收到粘性事件后,会自动从总线中删除,还是必须手动删除?
注意:我知道我可以使用以下代码在代码的任何其他位置手动删除它们:
EventBus.getDefault().removeStickyEvent(stickyEvent);
但我想知道我是否真的需要在订阅者方法中这样做。
答案 0 :(得分:7)
不,他们没有被删除。
但是,如果您在某人阅读时只是删除了一条消息,那么您所描述的就是一个队列。
粘性事件就像公告板上的粘性帖子一样:它们意味着保持“顶部”并被所有人观看一段时间。
答案 1 :(得分:3)
它们会一直保留在总线上,直到它们被明确删除。