EventBus在Fragment中使用的注意事项

EventBus是目前比较流行的模块通信库,在使用中还是有一些地方需要注意

简单回顾一下EventBus最基本的使用步骤

1.注册EventBus.getDefault().register(obj);
2.处理方法

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event event) {
   //处理逻辑
}

3.发送事件

 EventBus.getDefault().post(new Event());

4.解绑

EventBus.getDefault().unregister(obj);
在fagment中使用,由于项目中一般我们都会使用BaseFragment等基类,而Context也是作为基类的protected变量初始化,方便在其他地方获取context。但是在EventBus初始化中,register()方法传入的是一个Object,而不必须是Context,如果将基类的Context传入,就会导致应用直接崩溃,报错如下
       Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.shawnway.nav.app.chb.module.MainActivity and its super classes have no public methods with the @Subscribe annotation

错误使用

EventBus.getDefault().register(mContext);
EventBus.getDefault().unregister(mContext);

正确使用

EventBus.getDefault().register(this);
EventBus.getDefault().unregister(this);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值