EventBus的简单使用

EventBus的简单使用

由于项目中在用EventBus,感觉还挺方便的,赶快搞一波.之前听说RxJava和RxBus代替EventBus,所以一直没去学EventBus的用法.其实简单上手还是非常容易的.

  • 概念:EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
  • EventBus比较适合仅仅当做组件间的通讯工具使用,主要用来传递消息。
  • 使用EventBus可以避免搞出一大推的interface

1. 定义 events:

public class LoginSeccessEvent {
    public String msg;
    public String username;
    public String password;
}

2. 注册并取消注册您的用户。

例如在Android上,活动和片段通常应该根据其生命周期进行注册:
我在MainActivity中调用如下方法进行注册和取消注册,然后在onEventMainThread()中就会收到event(前提是有其他地方调用了EventBus.getDefault().post(loginSeccessEvent);发布事件),这个event可以携带一些信息,这样就非常方便.Activity不用setResult()和onActivityResult(),fragment和fragment传递数据也非常方便,避免写很多接口.

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

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

准备订阅者:声明和注释你的订阅方法,可选地指定一个线程模式:
@Subscribe
public void onEventMainThread(LoginSeccessEvent loginSeccessEvent) {
    String msg = loginSeccessEvent.getMsg();
    String name = loginSeccessEvent.getUsername();
    String password = loginSeccessEvent.getPassword();
    mReceiver.setText(msg);
    Snackbar.make(mReceiver, name + password, Snackbar.LENGTH_LONG).show();
}

3. 发布 events:

我在LoginActivity(需要回传event的界面)把event发布出去,然后在MainActivity就会接收到

LoginSeccessEvent loginSeccessEvent = new LoginSeccessEvent();
loginSeccessEvent.setMsg("登录成功");
loginSeccessEvent.setUsername(mEmailView.getText().toString());
loginSeccessEvent.setPassword(mPasswordView.getText().toString());
EventBus.getDefault().post(loginSeccessEvent);
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. 发布事件。在需要发送事件的地方,创建一个事件对象,并使用EventBuspost方法发布事件。 ```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、付费专栏及课程。

余额充值