EventBus post一次事件接收到多次

  最近在项目中用到了EventBus3.0 在使用的过程中 发现了一个问题由于需要全局回调 所以 我EventBus 的注册与反注册写到了基类 ,在代码执行过程中发现post一次时 我的接收时间逻辑走了两次 ,经过查找各种资料 ,解决方案如下:

1. 确保注册的时候没有重复注册  , 重复注册可能导致存在多个此类对象可能导致重复多次的接收

解决方案 1 : 在注册时 判断如果已经注册则不注册 代码如下

    if (!EventBus.getDefault().isRegistered(this)) {

         EventBus.getDefault().register(this);

   }

解决方案 2:还有一种可能则是由于注册 与反注册代码写在oncreate以及onDestory中而导致可能存在多个当前注册的对象 即 可能上一对象没有销毁存在多个 导致并没有取消注册 针对这种情况 只需要将注册与反注册代码写在onStart 以及 onStop 中(以Activity为例) 即可

2.还有就是接收事件线程将 threadMode = ThreadMode.ASYC 更改为 threadMode = ThreadMode.MAIN 避免由于异步造成多个对象 导致 接收多次

以上  希望对你有帮助

你可能感兴趣的:(EventBus post一次事件接收到多次)