1、引入
implementation 'org.greenrobot:eventbus:3.0.0'
2、在所需界面注册、实现onevent方法、注销
1、注册
EventBus.getDefault().register(this);
2、实现onevent方法
//eventbus接收消息 @Subscribe(threadMode = ThreadMode.POSTING, sticky = true) public void onEvent(Message event){ khxx.setText(event.getA()+" " + event.getB() ); } ThreadMode POSTING (默认) 表示事件处理函数的线程跟发布事件的线程在同一个线程 MAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作 BACKGROUND表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程 ASYNC表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作
其中Message是自定义的消息类
public class Message { private String a ; private String b ; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } }
3、注销
@Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); //解除注册 }
跟广播差不多也需要注销
3、在需要的位置发送消息
Message m = new Message(); m.setA("hahaha"); m.setB("heiheihei"); EventBus.getDefault().post(m);