您的位置:首页 > 移动开发 > Android开发

EventBus的简单使用

2016-09-06 19:23 309 查看

一、概述

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

EventBus框架原理流程图



Publisher:发布者, 通过post()方法将消息事件Event发布到事件总线

EventBus:事件总线

Subscriber:订阅者, 收到事件总线发来的消息。即onEvent方法被执行。注意参数类型必须和发布者发布的参数一致。

二、下载EventBus

Gradle:

compile 'org.greenrobot:eventbus:3.0.0'


三、使用(3 steps)

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

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


2.添加订阅者

// onCreate()进行注册
EventBus.getDefault().register(this);


// 需要添加注解
// 接收消息
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {/* 处理事件event... */};


// 在onDestory()进行解除注册
EventBus.getDefault().unregister(this);


3.发布事件

EventBus.getDefault().post(event);


四、进阶(Sticky Events)

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


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

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


2.添加订阅者

@Override
public 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);
}


@Override
public 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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 框架 发布