EventBus框架解析
xingfeng_coder
路漫漫其修远兮,吾将上下而求索
Gitbook地址:https://xingfeng.gitbook.io/hust
简书地址:https://www.jianshu.com/u/57f41372c68e
展开
-
EventBus简介以及初步使用
EventBus简介 EventBus是一个Android和Java的发布/订阅事件总线模型,其模型图如下所示: EventBus的优点有: 1. 简化组件之间的通信 2. 简化代码 3. 快速,小巧(~50K jar) 4. 具有线程分发、订阅优先级等高级特性 从模型图中可以看到几个概念: 1. Publisher:发布者,发布事件,事件的产生者 2. Event:事件...原创 2018-07-09 19:59:28 · 321 阅读 · 0 评论 -
EventBus的线程分发
EventBus支持线程分发,在上一篇博客EventBus简介以及初步使用中,了解到EventBus的使用主要涉及事件发送者,以及事件订阅者;对于发送和订阅这两个行为,可以在不同的线程中,这就是EventBus的线程分发。关于线程的设置,可以在订阅方法中使用@Subscribe注解进行线程的调节,如代码所示: @Subscribe(threadMode = ThreadMode.MAIN...原创 2018-07-10 21:04:25 · 1497 阅读 · 0 评论 -
EventBus配置、粘性事件、优先级和取消事件分发
EventBus配置 前面的博客中获取EventBus,都是使用EventBus.getDefault(),而如果需要对EventBus进行配置,那么需要使用EventBus.Builder进行设置。 EventBus eventBus = EventBus.builder() .logNoSubscriberMessages(false) .sendNoSubscri...原创 2018-07-23 19:42:43 · 5566 阅读 · 1 评论 -
EventBus源码分析之订阅-发布模型
EventBus事件总线模式如下图: 本文主要从两个方面介绍源码: 1. 订阅者是如何注册到事件中心的; 2. 发布者发布了事件之后,事件中心是如何将事件调用到合适的订阅方法的。 订阅者注册到事件中心 订阅者注册到事件中心需要调用如下代码: EventBus.gtetDefault().register(this) 订阅者可以是任何对象,唯一的要求是内部有@Subs...原创 2018-07-26 20:00:38 · 636 阅读 · 0 评论 -
EventBus源码分析之线程分发
EventBus的线程分发中介绍了EventBus中发布和订阅方法设置了ThreadMode之间的关系,最终表格如下: 发布线程 Android主线程 非Android主线程,线程a POSTING Android主线程 非Android线程,线程a MAIN Android主线程,阻塞主线程的发布 进入主线程的队列 MAIN_ORDE...原创 2018-08-02 19:03:05 · 427 阅读 · 0 评论