AndroidEventBus
AndroidEventBus copied to clipboard
A lightweight eventbus library for android, simplifies communication between Activities, Fragments, Threads, Services, etc.
hello,I discovered a problem,the function that eventbus.getdefault.postSticky() in BroadcastReceiver is not work,please help me,thank you
移除注册事件时偶尔会发生空指针现象
1.0.2版正常,在1.0.4版本以上时发现某些订阅方法无法接收到事件。 使用场景简述如下: 抽象类Alistener,包含订阅事件的方法method1,tag = “TAG1”,Alistener的实现类AAAlistener。 抽象类Blistener,包含订阅事件的方法method2,tag = “TAG2”,Blistener的实现类BBBlistener。 首先EventBus注册AAAlistener,当用户在UI触发事件“TAG1”,在AAAlistener的method1方法收到事件,在method1方法中EventBus注册new BBBlistener,接着弹出对话框让用户操作,完成之后发送“TAG2”事件;正常情况应该是BBBlistener的method2接收到这个事件,实际却没有接收到。 下载源码跟踪调试后发现在DefaultEventHandler的handleEvent方法调用时,应该执行BBBlistener.method2的时候,subscription.subscriber.get()却为null。目前并未深入研究,猜测是不是因为弱引用的AAAlistener被回收导致在其方法内new的BBBlistener也被回收?
我自己的解决方案(仅供参考):修改源码,在DefaultEventHandler的handlerEvent方法中添加了一句话 EventBus.getDefault().removeStickyEvent(event.getClass(), subscription.eventType.tag);
目前post只支持一个参数,今后会增加多参数么?
支持空事件。 修正test里sticky event的一个测试错误。
Thanks for the great library! However something is bothering me. I am posting a message to three different methods, each has its own tag and they are set to ThreadMode.ASYNC....
greenrobot eventbus 支持sticky, 举个例子,我把网络状态广播改成 eventbus方式, 在Application 中注册广播接收判断网络改变, 再post出去, 当前acitivity 创建时,可能早已经post了, 因此该 activity就接收不到, 之前网络连接上的事件, 当然我也可以在oncreate时,判断一下网络, 再主动 调用一下本来由于接收post 事件要调用的函数
这个@Produce 很精妙,用于启动Activity的时候调用
D/Event (15093): No subscribers registered for event class com.sogou.androidtool.event.NetChangeEvent D/Event (15093): No subscribers registered for event class bzy