从 EventBus 的介绍中,EventBus 给的定位是:
Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality
简单理解一下就是 Event bus 给 Android 及 Java (当然主要是 Android)的 Activity,Fragment,Threads,Services 之间提供一个简单的通信方式,从而能让我们用质量高且少的代码来完成我们的功能。
EventBus 是一个基于发布/订阅的设计模式的事件总线,其架构图如下。
https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/4/29/16a64e5f72833b3d~tplv-t2oaga2asx-zoom-in-crop-mark:3024:0:0:0.awebp
从架构图上来看,还是很简单的,跟我们所最熟悉的观察者模式是类似的。大概工作过程就是: (1) Subscriber 也就是订阅者,订阅一个 Event,其中 Event 是自己定义的,符合 POJO 的规范即可。 (2) 在需要时,Publisher 也就是发布者,就可将事件通过 EventBus 分发布相应的订阅者 Subscriber。
恩,就是如此简单。当然,其实现远不会这么简单了,还是干了很多脏活和累活的。