Android EventBus事件有时接收不到消息

路裕
2023-12-01

今天遇到了一个问题,一进入app EventBus 的订阅者就要获取消息,但是今天 EventBus发布事件之后回调方法无响应,订阅者并没有得到消息。但是在这之前是可以的,我没有动代码怎么就收不到消息了?我又测了几遍发现有时候可以有时候不可以。
接收不到消息一般是因为
1.没有注册
2.接收消息的方法不是public
3.发送的参数或接收的参数有一个写错了导致参数不一致
4.同一类型的粘性事件。
5.被优先级高的拦截了
不是粘性事件,而且有时候可以接收消息这几条都可以排除,考虑到一进入app就要获取消息可能是注册方法的位置问题,果然问题解决了。
EventBus 官方文档中建议在onStart()中注册,在onStop()中注销,但是在这段代码中有时候发布消息会在注册之前所以出现这种情况,所以我将注册代码写进了onCreate()中。

原代码

@Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

现代码(解决问题)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(this);
    }

根据实际情况写代码,注册和注销的位置根据需求改变

 类似资料: