我发布了一个活动的粘性事件,让我们调用此活动A.我在活动B中成功收到此事件。我转到活动C并再次回到活动B,因为我回来接收相同的事件我早些时候收到过我明白,因为我发布了一个粘性事件,我已经再次收到它,但是如何解决这个问题呢?我尝试了EventBus.getDefault().cancelEventDelivery(message);
,但却出错de.greenrobot.event.EventBusException: This method may only be called from inside event handling methods on the posting thread
我放了一个日志来检查发布和接收事件的Thread
。两者都显示为main
线程。
有谁能建议一些解决方案?
答案 0 :(得分:0)
也可以使用一个删除以前发布的粘性事件 removeStickyEvent方法。他们采取具体的事件 对象或事件类。像这样可以创造 消耗品事件。请记住,只有最后一个事件 保留事件类型。
想法是创建您的活动消耗品。例如:
public class SomeStivyEvent {
public void boolean consumed = false;
public void consumed(){
consumed = true;
}
}