0

我正在从一个活动发布一个粘性事件,让我们调用这个活动 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线程。任何人都可以提出一些解决方案吗?

4

1 回答 1

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;
        } 
    } 
    
于 2015-08-20T11:24:24.587 回答