EventBus 源码解析系列(如何使用)

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 指的是 事件通信的一个消息体,由开发者自己定义
上一篇:python学习笔记(4)装饰器


下一篇:Vue组件之间的数据共享