EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。很多人的开发中都喜欢用到它。
EventBus包括了三个要素
1:Event 事件,它可以包括各个类型,类,字符串,等等类型。
2:subscriber订阅者,eventBus3.0 之后名字可以任意取。不过要加上注解@Subcribe()并且指定线程POSTING
3:事件发送者,可以在任意线程中发布。EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。
EventBus有四种线程类型
POSTING 处理函数线程和发布事件线程都在同一个线程中。
MAIN 发布和处理线程都在主线程(UI线程)所以不能进行复杂的和耗时的操作。
BACKGROUND 标识处理线程在后台线程,如果发布线程实在主线程,那么事件处理线程会重新开一个后台线程
来进行操作,如果发布事件线程在后台线程,则处理事件也用该后台线程。
ASYNC 无论事件发布是那个,事件处理线程始终使用和创建新的子线程操作,同样不能进行UI操作。
手写EventBus就要了解它的源码和实现步骤。
本人查看了Eventbus源码后自建撰写了分demo,希望和网友一起研究研究
附件为github源码地址:
网友评论