先导一波依赖:
compile 'org.greenrobot:eventbus:3.1.1'
EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。
作为一个消息总线主要有三个组成部分:
事件(Event):可以是任意类型的对象。通过事件的发布者将事件进行传递。
事件订阅者(Subscriber):接收特定的事件。
事件发布者(Publisher):用于通知 Subscriber 有事件发生。可以在任意线程任意位置发送事件。

上图解释了整个EventBus的大概工作流程:事件的发布者(Publisher)将事件(Event)通过post()方法发送。EventBus内部进行处理,找到订阅了该事件(Event)的事件订阅者(Subscriber)。然后该事件的订阅者(Subscriber)通过onEvent()方法接收事件进行相关处理(关于onEvent()在EventBus 3.0中有改动,下面详细说明)。
事件订阅者需要注册也需要解绑
//注册eventbus
EventBus.getDefault().register(this);
@Override
protected void onDestroy() {
super.onDestroy();
//解绑eventbus
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
定义方法 接收发布者传过来的值 方法名自定义//接收eventbus传过来的值
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true)
public void onNewsEvent(UserInfoBean userInfoBean) {
this.userUid = userInfoBean.getUid();
this.userToken = userInfoBean.getToken();
}
发布者 把事件发送给订阅者//eventbus传值
UserInfoBean userInfoBean = new UserInfoBean(uid, token);
EventBus.getDefault().postSticky(userInfoBean);
事件 构造方法 get set方法
public class UserInfoBean {
private String uid;
private String token;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public UserInfoBean(String uid, String token) {
this.uid = uid;
this.token = token;
}
}
over