如何在发送后取消粘性消息的传递(GreenRobot-EventBus)

时间:2015-08-20 11:01:43

标签: android greenrobot-eventbus

我发布了一个活动的粘性事件,让我们调用此活动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线程。 有谁能建议一些解决方案?

1 个答案:

答案 0 :(得分:0)

  1. 您可以删除粘性事件: 休闲文件: https://github.com/greenrobot/EventBus/blob/master/HOWTO.md
      

    也可以使用一个删除以前发布的粘性事件   removeStickyEvent方法。他们采取具体的事件   对象或事件类。像这样可以创造   消耗品事件。请记住,只有最后一个事件   保留事件类型。

  2. 想法是创建您的活动消耗品。例如:

    public class SomeStivyEvent { 
        public void boolean consumed = false;  
    
        public void consumed(){
             consumed = true;
        } 
    }