EventBus的简单使用

来源:互联网 发布:淘宝优惠券公众号排名 编辑:程序博客网 时间:2024/05/17 07:46

一、概述

EventBus是GreenRobot出品的Android系统的一个Event Bus类库,主要是用来简化应用组件之间的通信。

EventBus框架原理流程图

这里写图片描述

  1. Publisher:发布者, 通过post()方法将消息事件Event发布到事件总线
  2. EventBus:事件总线
  3. Subscriber:订阅者, 收到事件总线发来的消息。即onEvent方法被执行。注意参数类型必须和发布者发布的参数一致。

二、下载EventBus

Gradle:

compile 'org.greenrobot:eventbus:3.0.0'

三、使用(3 steps)

1.定义事件(自定义类,比如)

public class MessageEvent { /* 添加需要的字段 */ }

2.添加订阅者

// onCreate()进行注册eventBus.getDefault().register(this);
// 需要添加注解// 接收消息@Subscribe  public void onEvent(MessageEvent event) {/* 处理事件event... */};
// 在onDestory()进行解除注册EventBus.getDefault().unregister(this);

3.发布事件

eventBus.getDefault().post(event);

四、进阶(Sticky Events)

***粘性事件***    在事件发送的时候,并没有直接的订阅者,当注册订阅者的时候,我们可以获取以前发送事件

1.定义事件(自定义类,比如)

public class MessageEvent { /* 添加需要的字段 */ }

2.添加订阅者

@Overridepublic void onStart() {    super.onStart();    // onStart()进行注册    EventBus.getDefault().register(this);}
// 接收消息@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)public void onEvent(MessageEvent event) {    // 必须在主线程更新UI    textField.setText(event.message);}
@Overridepublic void onStop() {    // 在onStop()进行解除注册    EventBus.getDefault().unregister(this);    super.onStop();}

3.发布sticky事件

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

4.如果不需要事件,进行移除

MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class);if(stickyEvent != null) {    EventBus.getDefault().removeStickyEvent(stickyEvent);}
0 0
原创粉丝点击