最近我在用EventBus去接收来自其他类的通知,用于Dialog内容的显示。当我删除会员的时候,竟然没有效果,删除会员的时候是根据保存的会员ID来删除会员信息的,我怀疑了是不是我的ID值没取到或者是没保存成功,我打印了日志。
这里面是有会员ID的,我的事件被执行了多次,而且是毫秒级别的。但是我只点击了一次删除的按钮事件,为什么会执行了三次呢?看时间就都是毫秒级别的,第一次接收到的毫秒时间是955,第二次第三次都是956,这是为什么呢?这有可能是我的EventBus没有解绑的原因?我明明就写了代码的呀。
这么奇怪的事情,于是我又打印了日志。
明明就已经注册成功了,为什么在里面的时候就是false呢?后来我才发现,在setOnDismissListener中不能用直接用this,应该用该类自己的this即DisplayDialog.this.如下图:
终于解决了EventBus事件执行多次的问题。总结一点就是EventBus可以注册多次,如果你不将之前的销毁解绑的话,就会产生这样的事情,最后要细心看自己写的代码,无论是再Activity,Fragment,Dialog类中,都要进行销毁解绑事件。
谢谢大家,如有不对的地方,请指正。