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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,442评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,545评论 25 709
  • 一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。Even...
    Mr丶sorrow阅读 15,076评论 0 13
  • 前言:EventBus出来已经有一段时间了,github上面也有很多开源项目中使用了EventBus。所以抽空学习...
    Kerry202阅读 5,039评论 1 2
  • 我是一个二十多岁的,不胖不瘦,不高不矮,也没什么钱的一个大学生。喜欢上民谣是高中快结束时候的事,那个时候民谣还是很...
    不吹牛逼好少年阅读 3,034评论 0 3