EventBus可以用于应用程序内各组件间、组件与后台线程间的通信
//跨界面通信框架
implementation 'org.greenrobot:eventbus:3.1.1'
创建相关事件
/***
* 搜索事件
* @time 2020/8/21 10:25
*/
public class OnSearchEvent {
/**
* 搜索关键字
*/
private String data;
/**
* 当前显示界面的索引
*/
private int selectedIndex;
/**
* 构造方法
*
* @param data
* @param selectedIndex
*/
public OnSearchEvent(String data, int selectedIndex) {
this.data = data;
this.selectedIndex = selectedIndex;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public int getSelectedIndex() {
return selectedIndex;
}
public void setSelectedIndex(int selectedIndex) {
this.selectedIndex = selectedIndex;
}
}
onResume注册,也可以在其他地方注册
//注册
EventBus.getDefault().register(this);
onPuse注销,也可以在其他地方注销
EventBus.getDefault().unregister(this);
发送消息
EventBus.getDefault().post(new OnSearchEvent(data,selectedIndex));
接收消息
/**
* 搜索事件
*
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSearchEvent(OnSearchEvent event) {
if (event.getSelectedIndex() == index) {
//只有索引一样才搜索
//这样可以避免同时搜索多个界面
fetchData(event.getData());
}
}