知乎专栏 |
上面章节中的例子EventBus实例中采用默认方式
EventBus.getDefault().register(this);
这种方式的获取到的EventBus的都是默认属性,有时候并不能满足我们的要求,这时候我们可以通过EventBusBuilder来个性化配置EventBus的属性。
// 创建默认的EventBus对象,相当于EventBus.getDefault()。 EventBus installDefaultEventBus(): // 添加由EventBus“注释预处理器生成的索引 EventBuilder addIndex(SubscriberInfoIndex index): // 默认情况下,EventBus认为事件类有层次结构(订户超类将被通知) EventBuilder eventInheritance(boolean eventInheritance): // 定义一个线程池用于处理后台线程和异步线程分发事件 EventBuilder executorService(java.util.concurrent.ExecutorService executorService): // 设置忽略订阅索引,即使事件已被设置索引,默认为false EventBuilder ignoreGeneratedIndex(boolean ignoreGeneratedIndex): // 打印没有订阅消息,默认为true EventBuilder logNoSubscriberMessages(boolean logNoSubscriberMessages): // 打印订阅异常,默认true EventBuilder logSubscriberExceptions(boolean logSubscriberExceptions): // 设置发送的的事件在没有订阅者的情况时,EventBus是否保持静默,默认true EventBuilder sendNoSubscriberEvent(boolean sendNoSubscriberEvent): // 发送分发事件的异常,默认true EventBuilder sendSubscriberExceptionEvent(boolean sendSubscriberExceptionEvent): // 在3.0以前,接收处理事件的方法名以onEvent开头,方法名称验证避免不是以此开头,启用严格的方法验证(默认:false) EventBuilder strictMethodVerification(java.lang.Class<?> clazz) // 如果onEvent***方法出现异常,是否将此异常分发给订阅者(默认:false) EventBuilder throwSubscriberException(boolean throwSubscriberException)
我的实例参考
EventBus eventBus = EventBus.builder().eventInheritance(true) .ignoreGeneratedIndex(false) .logNoSubscriberMessages(true) .logSubscriberExceptions(false) .sendNoSubscriberEvent(true) .sendSubscriberExceptionEvent(true) .throwSubscriberException(false) .strictMethodVerification(true) .build(); eventBus.register(this);