EventBus

EventBus

是一種用於Android的事件發佈-訂閱總線。

  • 事件:普通的Java對象,可以攜帶數據。
  • 訂閱:在訂閱方訂閱。
  • 發佈:在發佈方將事件發佈出來。

在這裏插入圖片描述

註冊

在訂閱方進行註冊,一般在onStart方法進行註冊。

EventBus.getDafault().register(this);

取消註冊

在訂閱方取消註冊,一般在onStop方法

EventBus.getDefault().unregister(this);

事件回調函數

在訂閱方

  • 必須要添加註解 @Subscribe
  • 方法必須爲 public void

例:

@Subscribe
public void 方法名(事件類 事件引用){
}

事件的發佈

在發佈方進行。

EventBus.getDefault().post(事件對象);

EventBus–ThreadMode

控制回調函數運行在那個線程。

  • POSTING:在哪一個線程發佈,回調函數就在哪個線程執行。
  • MAIN:回調函數一定在主線程執行
  • MAIN-ORDERED:回調函數在主線程執行,但與MAIN不同的是:在MAIN模式下,發佈方是會被訂閱方堵塞的(假如回調是一個耗時操作,則後續指令須在此回調執行完畢後才能處理),而在MAIN-ORDERED模式下,後續指令會立即執行。
  • BACKGROUNG:若發佈方在子線程發佈,則回調函數也在其線程執行,若發佈方在主線程發佈,則回調函數會在子線程進行。
  • ASYNC:回調函數會在另外一個獨立的新開的線程中執行,異步,不會造成阻塞

模式的設置方法

修改回調函數的註解

@Subscribe(threadMode = ThreadMode.POSTING)

粘性事件

通常我們都是先訂閱,後發佈,而粘性事件就是先發布,後訂閱。
在這裏插入圖片描述

回調方法

註解

@Subscribe(sticky = true)

發佈方

EventBus.getDefault().postSticky(事件對象);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章