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 避免由于异步造成多个对象 导致 接收多次

以上  希望对你有帮助

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于Android开发老司机来说肯定不会陌生,它是一个基于观察者模式的事件发布/订阅框架,开发者可以通过极少的代码...
    飞扬小米阅读 5,316评论 0 50
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,422评论 19 139
  • 项目到了一定阶段会出现一种甜蜜的负担:业务的不断发展与人员的流动性越来越大,代码维护与测试回归流程越来越繁琐。这个...
    fdacc6a1e764阅读 8,413评论 0 6
  • 月光钩帘帐 相思无限长 我欲问嫦娥 此情何思量
    杨又扬阅读 3,177评论 6 9
  • 2017年7月15日 星期六 晴 早上7:00集合在小亭子里,育心家人和宝贝们一起诵读了高能量的《...
    A小青竹阅读 1,202评论 0 0