EventBus事件执行多次的原因

时间:2024-05-20 16:57:22

最近我在用EventBus去接收来自其他类的通知,用于Dialog内容的显示。当我删除会员的时候,竟然没有效果,删除会员的时候是根据保存的会员ID来删除会员信息的,我怀疑了是不是我的ID值没取到或者是没保存成功,我打印了日志。

EventBus事件执行多次的原因

这里面是有会员ID的,我的事件被执行了多次,而且是毫秒级别的。但是我只点击了一次删除的按钮事件,为什么会执行了三次呢?看时间就都是毫秒级别的,第一次接收到的毫秒时间是955,第二次第三次都是956,这是为什么呢?这有可能是我的EventBus没有解绑的原因?我明明就写了代码的呀。

EventBus事件执行多次的原因

这么奇怪的事情,于是我又打印了日志。

EventBus事件执行多次的原因

EventBus事件执行多次的原因

明明就已经注册成功了,为什么在里面的时候就是false呢?后来我才发现,在setOnDismissListener中不能用直接用this,应该用该类自己的this即DisplayDialog.this.如下图:

EventBus事件执行多次的原因

EventBus事件执行多次的原因

终于解决了EventBus事件执行多次的问题。总结一点就是EventBus可以注册多次,如果你不将之前的销毁解绑的话,就会产生这样的事情,最后要细心看自己写的代码,无论是再Activity,Fragment,Dialog类中,都要进行销毁解绑事件。

谢谢大家,如有不对的地方,请指正。

相关文章