EventBus3.0常见问题

2020-04-10  本文已影响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(),就可以不用关心注册事件是否已经注册;或者注册前后的问题,如果发送粘性事件之前没有注册事件,事件注册完成就会收到之前发送的粘性事件;

上一篇下一篇

猜你喜欢

热点阅读