上面章節中的例子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);