Guava学习笔记--02. EventBus使用
Guava EventBus
EventBus 是Guava的一个发布订阅的模型,先看一个简单的实现:
定义一个Event的消息传递对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class TestEvent1 {
private final int message;
/**
* 构造方法
* @param message
*/
public TestEvent1(int message) {
this.message = message;
// System.out.println("TestEvent1 事件message:"+message);
}
public int getMessage() {
return message;
}
}
定义一个Listener
1
2
3
4
5
6
7
8
9
10
11
12
13
14public class EventListener {
public int lastMessage = 0;
public void listen(TestEvent1 event) {
lastMessage = event.getMessage();
System.out.println("Message:"+lastMessage);
}
public int getLastMessage() {
return lastMessage;
}
}定义一个使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
// 1.构造一个事件总线
EventBus eventBus = new EventBus("test");
// 2.构造一个事件监听器
EventListener listener = new EventListener();
// 3.把事件监听器注册到事件总线上
eventBus.register(listener);
// 4.事件总线发布事件,触发监听器方法
eventBus.post(new TestEvent1(1));
}
运行结果是:
1 | Message:1 |
如果是多个方法需要调用,只需要在新方法上面加上@Subscribe
注解。
1 |
|
如果想使用异步的方法处理,可以使用AsyncEventBus
,具体代码:
1 |
|
当然也可以注册多个EventListener。
1 | eventBus.register(new EventListener()); |