Guava学习——EventBus

学习Eventbus的相关知识,留存记录,待以后查看。


环境说明:windows7/JDK7/guava-18.0


EventBus简介

Guava是Google的一个核心库,有很多好用的工具,开源在Github上,地址:google/guava。其中对事件处理的模块是EventBus。利用设计模式中的观察者模式,实现对时间的监听、发布和订阅。阅读源码,并参考WikiAPI文档来写一些例子学习。

Guava引用

Maven配置,在pom.xml文件中引入:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

注:guava对JAVA的版本有要求,最低是JDK 1.6,21.0版本之后要求JDK 1.8。

EventBus概述
  • 订阅事件:

事件的订阅方法中,只接受一个参数:事件。将需要处理的事件封装成一个对象,在需要对该事件进行处理时再发布。

  • 接收并处理事件:

在处理事件的方法上,加 @Subscribe 标签,调用 EventBus 的 register(Object) 方法注册。

  • 发布事件:

调用 EventBus 的 post(Object) 发布事件,这是顺序执行事件的处理方法,需要异步处理时,用 AsyncEventBus。


测试

事件对象

事件:为每个学生创建学籍。

public class StudentEvent{

    private String name;
    
    public StudentEvent(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

监听事件

有学生则为其创建学籍。两个方法都有 @Subscribe 标签,所以当有该事件发布时,两个方法都会执行。

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

public class StudentEventListener {

    /**
     * 事件处理,创建学籍
     * @param event
     */
    @Subscribe
    public void listenStudentEvent(StudentEvent event) {
        System.out.println("正在为学生"+event.getName()+"创建学籍,请稍候!");
        System.out.println("......");
        System.out.println(event.getName()+"的学籍创建完成!");
    }
    
    /**
     * 查询学籍信息
     * @param event
     */
    @Subscribe
    public void listen_2(StudentEvent event) {
        System.out.println("...查询"+ event.getName() +"学籍信息...");
    }
}
注册发布
import org.junit.Test;

import com.google.common.eventbus.EventBus;

public class TestRunEventBus {

        @Test
        public void testEvent() throws Exception {

            EventBus eventBus = new EventBus("student");
            StudentEventListener listener = new StudentEventListener();

            //注册
            eventBus.register(listener);

            eventBus.post(new StudentEvent("小明"));
        }
}

测试结果
正在为学生小明创建学籍,请稍候!
......
小明的学籍创建完成!
...查询小明学籍信息...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于Android开发老司机来说肯定不会陌生,它是一个基于观察者模式的事件发布/订阅框架,开发者可以通过极少的代码...
    飞扬小米阅读 1,488评论 0 50
  • EventBus是一个 发布/订阅 模式的消息总线库,它简化了应用程序内各组件间、组件与后台线程间的通信,解耦了事...
    hanpfei阅读 4,104评论 0 50
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,372评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,948评论 18 139
  • 凡在历经四个疗程后,遵照主治医生王主任的治疗方案,该是放化疗同步了。 胸部放疗共三十次,到十五次的时候...
    宏伟范阅读 316评论 0 1