1. 程式人生 > >進一步瞭解EventBus優點!!

進一步瞭解EventBus優點!!

關於 EventBus 在開發中經常會選擇使用它來進行模組間通訊、解耦。平常使用這個庫只是很淺顯的操作三部曲,register,post,unregister。

EventBus 是一個開源庫,它利用釋出/訂閱者模式來對專案進行解耦。它可以利用很少的程式碼,來實現多元件間通訊。以往的通訊我們很容易會想到,Handler機制,廣播,但是這兩者中出現的問題也就顯而易見,程式碼量多,元件間容易產生耦合引用。對EventBus初步瞭解的話我們先看一下下面這張圖:

通過這張圖,我們可以很容易的看到EventBus是如何進行工作的,Publisher(釋出者)通過post()方法,把Event事件釋出出去,Subscriber(訂閱者)在onEvent()方法中接收事件。使用它我們要了解他的哪些優點?具體可以看一下:

  • 簡化了元件間交流的方式
  • 對事件通訊雙方進行解耦
  • 可以靈活方便的指定工作執行緒,通過ThreadMode
  • 速度快,效能好
  • 庫比較小,不佔記憶體
  • 使用這個庫的app多,有權威性
  • 功能多,使用方便

初步瞭解已經完成!

 

EventBus的準別工作,我們可以自己去查一下,在這裡我就不記錄了。要提一下的是

(1)一定要混淆,不然會出現在debug版本中沒問題,但是到了release版本中會出現收不到訊息的現象。!!

(2)一定要在註冊使用完之後,登出掉。不然會出現問題。

 

還有一些,EventBus的註解@Subscribe是EventBus自定義的一種註解,他可接收三個引數。ThreadMode、boolean sticky、int priority。我在使用時主要關注的是ThreadMode這一點,是用來決定onReceiveMsg將在哪種執行緒環境下被呼叫。EvenBus一共有5種Thread mode。而預設的模式是PSOSTING模式,他表示post事件是什麼執行緒,onReceiveMsg接收事件方法就在同樣的執行緒環境中執行程式碼。其他模式可以看一下:

相關連結:https://blog.csdn.net/qq_34902522/article/details/84890474