2012-10-31 98 views
2

訂閱特定事件類的類是否有可能在不聽它的情況下觸發相同的事件類型?停止收聽自己的活動?

例子:

Class A { 

    EventBus bus = new EventBus(); 
    public A() { 
    bus.register(this); 
    bus.post (new String("event!")); 
    } 

    @Subscribe public void consume(String event) { 
    System.out.println("Got event: "+event); 
    } 

} 

回答

4

你可以有你的事件類包括事件,就可以忽略其中源是this任何事件(即發佈該事件的對象)的來源。儘管如此,我建議儘量讓你的類能夠始終如一地處理事件。

+0

感謝您的回答! – Jose

0

不,沒有。 EventBus如何確定事件起源於何處?

如果您想忽略某些事件,則必須在事件對象本身中包含足夠的信息以確定是否應該忽略該事件。

+0

那麼它可以使用調用線程的StackTrace ...但我想這將是一個繁重的操作被頻繁調用。 請看這裏:http://stackoverflow.com/questions/1069066/get-current-stack-trace-in-java – Jose

+1

是的 - 如果你有這個類的多個實例,並希望他們傾聽彼此的事件。 –