EventBus事件执行多次的原因

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

这里写图片描述

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

这里写图片描述

这里写图片描述

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Nuxt2 中使用 eventBus 事件总线,可以通过以下步骤实现: 1. 创建一个 eventBus.js 文件 在项目的根目录中,创建一个 eventBus.js 文件,代码如下: ```javascript import Vue from 'vue'; export const eventBus = new Vue(); ``` 这里使用了 Vue 的实例来创建 eventBus,并且将它导出,这样就可以在项目中的任何地方使用它了。 2. 在需要使用 eventBus 的组件中引入 eventBus 在需要使用 eventBus 的组件中,可以使用以下代码来引入 eventBus: ```javascript import {eventBus} from '@/eventBus.js'; ``` 这里的 @ 表示项目的根目录,如果 eventBus.js 文件不在根目录中,那么需要改成相应的路径。 3. 使用 eventBus 发送事件 在需要发送事件的地方,可以使用以下代码来发送事件: ```javascript eventBus.$emit('eventName', data); ``` 这里的 eventName 是事件的名称,data 是传递的数据。 4. 使用 eventBus 监听事件 在需要监听事件的地方,可以使用以下代码来监听事件: ```javascript eventBus.$on('eventName', (data) => { // 处理事件 }); ``` 这里的 eventName 是事件的名称,data 是传递的数据。事件触发后,会执行回调函数中的代码。 总结: 以上就是在 Nuxt2 中使用 eventBus 事件总线的方法,通过使用 eventBus,可以在组件之间方便地进行通信。需要注意的是,eventBus 的使用需要谨慎,过多的使用可能会导致代码的可读性和维护性降低。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值