EventBus简单使用

EventBus的定义
主要功能是用来替代传统的Intent、Handler、Broadcast在Fragment、Activity、Service以及线程之间传递消息。

它的优点
解耦和简化Activities, Fragments等组件以及后台线程之间的通信,分离事件发送方和接收方
使得代码更简洁,避免出现复杂的依赖性和生命周期问题
体积小(大概只有50k 的 jar包)

如何使用
添加依赖
dependencies {
implementation ‘org.greenrobot:eventbus:3.1.1’
}

在需要的地方注册事件
EventBus.getDefault().register(this);
在ondestroy中解注册
EventBus.getDefault().unregister(this);

还需要自定义一个事件类型 例如
public class MessageEvent {
private String message;

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

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

}
传递String message数据

然后接受方可以通过注解方式来获取数据,例如
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
String title=event.getTitle();
int image=event.getImage();
String content=event.getContent();
}
其中有4种线程模式
ThreadMode.POSTING:
订阅者方法将在发布事件所在的线程中被调用。这是 默认的线程模式。事件的传递是同步的,一旦发布事件,所有该模式的订阅者方法都将被调用
ThreadMode.MAIN :发送方和接受方都在主线程工作
ThreadMode.BACKGROUND :如果发送方在主线程,则接受方在子线程,如果发送方在子线程,则接受方在发送方的子线程工作
ThreadMode.ASYNC:无论发送方在哪个线程,接受方都另开一个子线程工作

发送方通过
EventBus.getDefault().post(new MessageEvent(“Hello EventBus!”));
来发送事件传递数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EventBus是一个开源的发布-订阅式的事件总线库。下面是一个简单EventBus使用的代码示例: 1. 首先,需要在项目中引入EventBus库。可以通过Gradle或Maven等构建工具添加依赖。 2. 定义事件类。创建一个Java类,作为事件的载体,可以包含需要传递的数据。 ```java public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } } ``` 3. 注册事件订阅者。在需要接收事件的地方注册订阅者,并指定订阅的事件类型。例如,在Activity的onCreate方法中注册: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } ``` 4. 定义事件订阅者的处理方法。在订阅者中定义处理事件的方法,方法需要加上@Subscribe注解,并指定事件类型。 ```java @Subscribe public void onMessageEvent(MessageEvent event) { String message = event.getMessage(); // 处理事件 } ``` 5. 发布事件。在需要发送事件的地方,创建一个事件对象,并使用EventBus的post方法发布事件。 ```java EventBus.getDefault().post(new MessageEvent("Hello EventBus!")); ``` 6. 取消事件订阅。在不需要接收事件的地方,取消注册订阅者。例如,在Activity的onDestroy方法中取消注册: ```java @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } ``` 以上就是一个简单EventBus使用代码示例。通过事件的发布和订阅,可以实现不同组件之间的解耦,方便数据传递和通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值