Guava — EventBus

Guava 提供了事件总线的一个实现方案EventBus。它是事件发布订阅模式的实现,观察者模式。Guava为我们提供了同步实现EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的

eventBus.post(1); eventBus.post(1L);

post方法,直接发布事件

订阅者需要注册进来,eventBus.register方法注册订阅者。

订阅者的方法需要加上**@Subscribe注解**就可以监听事件了。订阅者的实例类对应的是自定义的方法。也就是自己定义class可以有多个带Subscribe方法。每个方法都是一个监听者。自定义方法只能有一个参数,参数类型一致,事件就会执行。参数不能是简单类型,要封装类型。

如果eventBus发出的事件,没有任何订阅者处理,eventBus就会发出一个DeadEvent,我们可以监测这个事件。

@Subscribe public void lister(DeadEvent event) { System.out.printf("%s=%s from dead events%n", event.getSource().getClass(), event.getEvent()); }

class com.google.common.eventbus.AsyncEventBus=java.lang.Object@6726973 from dead events

注意:同一个类只能register一次,避免重复预订。多次预订无效。重写了equals方法并标识为final。

eventBus有个属性identifier,用来标识。这说明在一个应用里是可以有多个EventBus的。

当存在继承时,@Subscribe 是可以继承下来的。重写方法不需要在加这个注解 也会监听事件。

参考

http://blog.csdn.net/yanghua\_kobe/article/details/46317297

http://www.cnblogs.com/whitewolf/p/4132840.html

http://blog.csdn.net/wzy\_1988/article/details/38922449

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

腾讯安卓面试,完美讲解内存缓存LruCache实现原理

开头在Android开发当中,相信大家对第三方库的重要性是无需多说的,尤其是三方库源码更是重中之重,而EventBus源码就属于其中的一个重点。EventBus是安卓(Java中也可以用)开发中非常流行的一个第三方库,是一种发布/订阅事件的总线.想必每个入了门的Android开发者都多少对EventBus有过了解,EventBus是一个Android事件发布

Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例

    原文地址:Guava库学习:学习GuavaEventBus(二)EventBus事件订阅示例(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.xx566.com%2Fdetail%2F215.html)上一篇Guava库学习:学习GuavaEventBus(一

Rxjava和EventBus对比

总的来说,EventBus是一款针对Android优化的发布/订阅事件总线,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。而Rxjava则是一种基于异步数据流的处理方案。如果一个订阅者需要注册多个事件的时候,Rxjava需要一个个单独的注册,而EventBus则可以实现一