同步模式
public class MyObserver {
@Subscribe
public void onEvent(Object obj) {
if (obj != null) {
System.out.println("obj = " + obj);
}
}
}
EventBus eventBus = new EventBus("Test");
MyObserver observer = new MyObserver();
eventBus.register(observer);
eventBus.post("Hello World!");
eventBus.unregister(observer);
异步模式
public class MyObserver {
@Subscribe
public void onEvent(Object obj) {
if (obj != null) {
System.out.println("obj = " + obj);
}
}
}
Executor executor = new Executor() {
@Override
public void execute(Runnable command) {
new Thread(command).start();
}
};
AsyncEventBus asyncEventBus = new AsyncEventBus("Async", executor);
asyncEventBus.register(observer);
asyncEventBus.post("Async Hello World!");
asyncEventBus.unregister(observer);
注意
- 需要防止并发调用时,可在@Subscribe注解下再加上@AllowConcurrentEvents
- EventBus并未直接实现单例,可以根据自己的业务来随机应对
- Subscribe的方法必须是Public的