1 EventBus.getDefault().register(this);//在需要接收事件类 注册eventbus
2 在需要接收事件类 来写接受事件的方法,用@Subscribe 注解
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(Object event) { }
注:ThreadMode.POSTING 默认,表示事件处理函数的线程跟发布事件的线程在同一个线程。
ThreadMode.MAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。
ThreadMode.MAIN_ORDERED在 Android 上,订阅者将在 Android 的主线程(UI 线程)中被调用。 与 MAIN 不同的是,事件将始终排队等待传递。 这确保了 post 调用是非阻塞的。
ThreadMode.BACKGROUND:表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。
ThreadMode.ASYNC 表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。
3 发送事件
EventBus.getDefault().post(new ConstantEvent(13));
注:本文章的 ConstantEvent 指的是 事件通信的一个消息体,由开发者自己定义