我正在从一个活动发布一个粘性事件,让我们调用这个活动 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
线程。任何人都可以提出一些解决方案吗?
问问题
1070 次
1 回答
0
- 您可以删除粘性事件:休闲文档:
https ://github.com/greenrobot/EventBus/blob/master/HOWTO.md
也可以使用 removeStickyEvent 方法之一删除以前发布的粘性事件。它们采用具体的事件对象或事件类。像这样可以创建消耗性事件。请记住,仅保留事件类型的最后一个事件。
想法是创建您的活动消耗品。前任:
public class SomeStivyEvent { public void boolean consumed = false; public void consumed(){ consumed = true; } }
于 2015-08-20T11:24:24.587 回答