什么是EventBus?
EventBus是基于发布/订阅者机制的,对事件进行发布和接受,例如Intent、Handler、Broadcast等功能,但是EventBus相对于前者们 开销小,解耦性强。
使用EventBus
首先要添加依赖
compile 'org.greenrobot:eventbus:3.1.1'
介绍:
EventBus基于发布/订阅者模式,首先要创建一个事件,其次进行发布、订阅。
1.创建事件
自定义一个事件类,定义用来传输的数据的类型。
2.订阅事件
分三步
1. 注册订阅者
2.订阅事件
3.注销订阅者
1) 注册订阅者
2) 订阅事件
订阅事件要用@Subscribe 注解来定义
其中threadMode有四种类型
1. POSTING (默认) :表示事件处理跟发布事件在同一个线程。
2. MAIN 表示事件处理在主线程(UI)线程(在这里不能进行耗时操作)。
3. BACKGROUND 表示事件处理在后台线程。
4. ASYNC 表示事件处理始终会新建一个子线程运行(同样不能进行UI操作)。
3) 注销订阅者
3. 发布事件
在需要的地方发布事件,所有订阅了该类型事件并已注册的订阅者将收到该事件
另外还有 粘性事件
粘性事件指的是:如果先发布了事件,然后有订阅者订阅了该事件,那么除非再次发布该事件,否则订阅者将永远接收不到该事件。此时,可以使用粘性事件。发布一个粘性事件之后,EventBus将在内存中缓存该粘性事件。当有订阅者订阅了该粘性事件,订阅者将接收到该事件。
参考:EventBus使用详解
网友评论