自己看GitHub使用说的比较概念,自己总结一个简单的使用的demo供大家更好的理解和学习一下
1.使用框架
implementation 'org.greenrobot:eventbus:3.1.1' //EventBus
2.定义一个自己是用的静态的messageEvent类
public static class MessageEvent { /* Additional fields if needed */ }
我自己的定义的demo 类如下
public class MessageEvent {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMag() {
return mag;
}
public void setMag(String mag) {
this.mag = mag;
}
public MessageEvent(int id, String mag) {
this.id = id;
this.mag = mag;
}
public int id;
public String mag;
}
我是在一个项目的Activity下面包含着两个fragment应用这个,EventBus在这个demo最主要的作用就是刷新,只是提供一个具体的是使用例子
3.onCreate()方法中首先注册EventBus,onDestroy()方法中取消注册。这个没有什么好说的
void initEventBus() {
EventBus.getDefault().register(this);
}
@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
4.写具体想要调用的方法,这个方法就是我想在主Activity中调用两个子fragment刷新页面数据,get…()两个方法获取的是接口的数据
private int REFREASHDATA = 101;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetMessage(MessageEvent messageEvent) {
if (messageEvent.id == REFREASHDATA) {
Log.e("onGetMessage", "111111111");
incomeFragment.getFarmInputsData();
mOutcomeFragment.getFarmOutputsData();
}
}
5.调用这个事件
官方
Post events:
EventBus.getDefault().post(new MessageEvent());
我的使用
void backToActivity() {
EventBus.getDefault().post(new MessageEvent(101, ""));
finish();
}
整体思想就是一个观察者在需要的时候发送一个消息给主要的线程,随时响应消息需求