Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

50.5. 配置 EventBus

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