EventBus的使用

EventBus简介

EventBus是一个Android和Java的开源库,使用发布者/订阅者模式进行松散耦合。EventBus只需几行代码即可实现与分离类的集中通信 - 简化代码,消除依赖关系,并加速应用程序开发。官方地址是http://greenrobot.org/eventbus/。
在这里插入图片描述

使用EventBus的好处

  1. 简化了组件之间的通信;
  2. 将事件发送者和接收者分离;
  3. 适用于UI工件(例如,活动,片段)和后台线程;
  4. 避免复杂且容易出错的依赖关系和生命周期问题;
  5. 很快,专门针对高性能进行了优化;
  6. 体积很小;

开始使用

1、首先添加依赖

	implementation 'org.greenrobot:eventbus:3.1.1' 

2、准备订阅者

在自己需要用到的Activity或者Fragment等地方中,在onCreate()方法中注册订阅者,然后在onDestory()中解注册订阅者

注册:

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

解注册:

@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}

构造消息发送类:

public class MessageEvent {

public final String message;

public MessageEvent(String message) {
    this.message = message;
}

}

3、发布活动

在另一个Activity(或其他Fragment等)中,需要发送的消息添加以下代码即可:

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

4、接收消息

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEvent(StickyEvent event){
    tv_c_result.setText(event.msg);
}

粘性事件

某些事件包含事件发布后感兴趣的信息。例如,事件表示某些初始化已完成。或者,如果您有一些传感器或位置数据,并且您希望保留最新值。您可以使用粘性事件,而不是实现自己的缓存。所以EventBus将某种类型的最后一个粘性事件保存在内存中。然后,粘性事件可以传递给订阅者或明确查询。因此,您不需要任何特殊逻辑来考虑已有的数据。

发布消息:

    EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));

接收消息:

	@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
    public void onEvent(MessageEvent event) {   
        textField.setText(event.message);
    }

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27135121/article/details/97886088

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值