EventBus的介绍和正确使用,以及EventBus官方文档的坑

在这里插入图片描述
在这里插入图片描述

使用场景在这里插入图片描述
官方架构图

在这里插入图片描述

官方文档中这样配置:

第一步:导入EventBus库
implementation 'org.greenrobot:eventbus:3.1.1'
第二步:在项目中初始化及使用
1、Define events:
public static class MessageEvent { /* Additional fields if needed */ }
2、注册和反注册
//订阅事件
@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(MessageEvent event) {/* Do something */};

//Register and unregister your subscriber. For example on Android, activities and fragments should usually register according to their life cycle:
 @Override
 public void onStart() {
     super.onStart();
     EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
     super.onStop();
     EventBus.getDefault().unregister(this);
 }
3、Post events:
//发送事件(消息)
EventBus.getDefault().post(new MessageEvent());
4、简单介绍:
1@Subscribe注解中加入:sticky = true,其作用是延时消费或页面未初始化。

2、如果订阅两个方法可以同时接收,先执行哪个方法呢?
priority数值越大,优先级越高。priority 默认是0
例如:@Subscribe(threadMode = ThreadMode.MAIN, priority = 10) > @Subscribe(threadMode = ThreadMode.MAIN, priority = 1);  

然而,并没有收到消息

如果你遇到同样的问题,可以在onCreate()方法中注册:

EventBus.getDefault().register(this);

在onDestory()方法中进行注销

if(EventBus.getDefault().isRegistered(this)) {
     EventBus.getDefault().unregister(this);
}

运行结果,收到消息了。 然而这依然不是完美的,因为它走的是反射,而不是注释处理器。

看过来,以下是注释处理器正确用法:

http://greenrobot.org/eventbus/documentation/subscriber-index/
1、Using annotationProcessor
android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [ eventBusIndex : 'com.example.myapp.MyEventBusIndex' ]
            }
        }
    }
}
 
dependencies {
    implementation 'org.greenrobot:eventbus:3.1.1'
    annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1'
}
2、在Application中初始化
EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus();
3、其他的步骤和用法同官方推荐的方法。但依然推荐在onCreate和onDestory中进行注册和注销。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉淀的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值