事件总线EventBus3.0解读

EventBus是一个降低Android组件间耦合的框架,基于观察者模式实现。本文详细介绍了EventBus的原理、使用方法、ThreadMode的四种模式、StickyEvent和事件优先级,帮助开发者更好地理解和使用EventBus。
摘要由CSDN通过智能技术生成

一、为何使用EventBus

今天我们介绍一个将耦合度降到极低的框架EventBus

在这之前处理APP全局的监听,大多时候用的是BrodercastReceiver来实现时间的监听。但用起来很不方便,
BrodercastReceiver在APP中限定只监听系统的广播事件(如:电量,网络等)就OK了。在一些模块或组件之间的时间传递大多用的观察者,在使用的过程中你会发现一个个的回掉,各式各样的参数弄得你头晕目眩。那我们就接触好的框架解决开发中遇见的问题,让自己更轻松的开发。

二、EventBus原理分析

EventBus基于观察者模式的Android事件分发总线。通过事件总线可以实现Activity、Fragment、Service等不同模块或组件之间的通信。避免不同组件和模块之间的耦合问题。方便代码的维护与理解。

事件总线是基于观察者模式的思想实现的,它使用发布订阅的方式支持组件和模块间的通信,摒弃了观察者模式需要显示注册回调的缺点,同时可用于替换Java中传统的事件监听方式。

发布者Publisher:发布某种事件的对象。

事件Event:一个简单的POJO对象。只包含数据,不对数据进行处理。

事件总线EventBus: 负责存储时间信息,处理事件的流动和分发,通过时间总线,事件发布者与订阅者互相不知道对方的存在,是解耦的。事件被发布到总线上({@link #post(Object)})到总线,它将它传递给具有事件类型匹配处理程序方法的订阅服务器。要接收事件,订阅者必须使用{@link #register(Object)}向总线注册自己。注册之后,订阅者将收到事件,直到调用{@link #unregister(Object)}。事件处理方法必须由 {@link Subscribe}必须是public,返回非(空),并且只有一个参数 (事件)。

订阅者Subscriber: 订阅某个事件,一般情况会有一个回掉函数处理接收到的事件。订阅者通过{@link #register(Object)}向总线注册自己,即为订阅事件。订阅者也可以直到调用{@link #unregister(Object)}取消事件订阅。

这里写图片描述

三、EventBus开源库使用(来自greenrobot/EventBus

优点:
1.简化组件之间的通信
2.分离事件发送器和接收器
3.对activity、fragment和线程进行良好的执行
4.避免复杂和容易出错的依赖关系和生命周期问题。
5.快速;专为高性能优化
6.体积小(<50k)

Android studio & Gradle使用分为以下几步:

0.在Gradle中添加在线依赖。

compile 'org.greenrobot:eventbus:3.0.0'

1.定义消息事件MessageEvent,也就是创建事件类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值