1、在onStart()方法中注册
@Override
public void onStart() {
super.onStart();
// 注册 EventBus
// 判断 Eventbus 是否注册
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
}
2、在onStop()方法中销毁
@Override
public void onStop() {
super.onStop();
// 注销操作
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
3、发送消息
EventBus.getDefault().post(new EventBusMsgInfo(position));
4、自定义方法 接受发送的数据
@Subscribe(threadMode = ThreadMode.MAIN)
public void getEventBusMsg(EventBusMsgInfo busMsgInfo){
// 调用切换界面的方法,实现切换界面
//该方法可直接将传递过来的数据进行操作
switchPager(busMsgInfo.position);
}
定义发送消息传递的bean类
public class EventBusMsgInfo { public int position; public EventBusMsgInfo(int position) {
super();
this.position = position;
} }
5、重点提示
5.1、添加注解在此处有三种模式
模式一:POSTING:默认的模式,发送和接受操作都在一个线程中执行
模式二:MAIN:不管在那个线程发送消息,都在UI线程接收
模式三:BACKGROUND:如果在子线程发送消息,那么接收也必须在子线程,如果在主线程发送消息,那么接收也必须在主线程。
模式四:ASYNC:接收和发送都在子线程中执行
5.2、EventBus发送消息 发送的对象应该是一个bean类本例中