EventBus3.0常见问题

1、EventBus事件接收不到的几种情况

a、没有调用EventBus的注册方法(register)

b、使用的是普通的订阅事件,而在注册订阅消息之前就发送了消息(解决可以参考第3个问题)

c、接收方法中的参数与发送的不一致,导致EventBus判断没有对应的注册者

d、发送的是粘性事件,并且是同一类型的粘性事件(通过源码可以发现:粘性事件会加入一个叫stickyEvents的Map集合中,该集合使用event.getClass作为key,event作为value,因此当出现同一类的粘性事件时,会将之前的粘性事件给替换掉。)

e.使用的是粘性事件,可是在订阅事件处理函数上未加 sticky = true

 2、事件post了一次,事件处理却执行了多次?

出现这个问题的原因一般是EventBus被注册了多次,无论是在Activity,Fragment,Dialog类中,都要进行事件的销毁解绑处理。

3、如何实现在EventBus注册之前,发送事件也能接收到事件?

在发送事件的时候使用Eventbus.getDefault().postSticky(),就可以不用关心注册事件是否已经注册;或者注册前后的问题,如果发送粘性事件之前没有注册事件,事件注册完成就会收到之前发送的粘性事件;

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

推荐阅读更多精彩内容

  • EventBus 是一款在 Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发...
    SheHuan阅读 65,971评论 13 186
  • EventBus 是一款在 Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发...
    MonkeyLqj阅读 10,471评论 3 31
  • EventBus源码分析(一) EventBus官方介绍为一个为Android系统优化的事件订阅总线,它不仅可以很...
    蕉下孤客阅读 4,056评论 4 42
  • EventBus是在Android中使用到的发布-订阅事件总线框架,基于观察者模式,将事件的发送者和接收者解耦,简...
    BrotherTree阅读 424评论 0 1
  • 接触本心是从去年认识艾欣开始的,当时上萌姐的课,艾欣是我们组的组长,她真的是一个特别认真负责任的人,我有幸...
    奔跑的芳芳2018阅读 1,009评论 2 4