1.导入依赖:
implementation 'org.greenrobot:eventbus:3.0.0'
标题2.对要传的值发布事件,两种方式:
## 普通事件:
EventBus.getDefault().post(值);
## 粘性事件:(如果进程先走的发布事件,再走的注册,用粘性事件)
EventBus.getDefault().postSticky(值);
3.要接受值的页面进行注册判断:
## //判断是否已经注册
if (!EventBus.getDefault().isRegistered(this)){
EventBus.getDefault().register(this);
}
4.定义方法,接收值:
//(粘性事件)
@Subscribe(sticky = true)
//(注意要接受的值的类型)
public void onTouch(List<NewsBean.DataBean> dataBeans){
Toast.makeText(this,"",Toast.LENGTH_LONG).show();
}
5.当页面销毁或停止运行时,进行取消注册:
@Override
public void onStop() {
super.onStop();
//当停止时,取消订阅
EventBus.getDefault().unregister(this);
}
注1.:
若要在不同页面接收相同类型的不同值,为了避免接收的值出错,可以给值加一个标识 符,通过Bean类保存,然后通过接收Bean来接受值。
注2:
接受事件的方法参数事件类型必须为引用数据类型(不能为基本数据类型)