EventBus 知識點總結

隨着RxJava 的火爆,RxBus 相對來講比較配套,我不知道還會不會用eventBus 可是誰知道呢,總結一下備忘仍是不錯的選擇。app

http://greenrobot.org/eventbus/ide

  EventBus-Android的發佈 - 訂閱

使用eventBus的好處函數

EventBus:活動爲Android

EventBus是使用Android的開放源碼庫發佈/訂閱爲鬆耦合模式。EventBus使得脫鉤類與代碼,只需幾行中央通訊-簡化了代碼,消除依賴關係,並加快應用開發。
EventBus-Android的發佈 - 訂閱post

使用你的好處EventBus:這...

  • 簡化組件之間的通訊
  • 解耦事件發送者和接收者
  • 與活動,片斷,和後臺線程表現良好
  • 避免了複雜且容易出錯的依賴關係和生命週期問題
  • 快; 專爲高性能而優化
  • 很小(<50K JAR)
  • 在實踐中被證實與應用程序安裝100,000,000+
  • 擁有先進的功能,如交付線程,用戶優先級等。

添加:性能

 compile 'org.greenrobot:eventbus:3.0.0'

第1步:定義事件

事件是POJO(簡單Java對象)沒有任何特殊要求。優化

public class MessageEvent {
    public final String message;
    public MessageEvent(String message) {
        this.message = message;
    }
}

 

2.Prepare subscribers(準備訂閱)this

// This method will be called when a MessageEvent is posted (in the UI thread for Toast)
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
 
// This method will be called when a SomeOtherEvent is posted
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

//定義回調函數,至關於觀察者模式中的on***Listener函數,在EventBus中能夠定義四種類型的回調函數:spa

//onEvent 它和ThreadModel中的PostThread對應,這個也是默認的類型,當使用這種類型時,回調函數和發起事件的函數會在同一個線程中執行線程

//onEventMainThread,當使用這種類型時,回調函數會在主線程中執行,這個在Android中很是有用,由於在Android中禁止在子線程中修改UIcode

//onEventBackgroundThread,當使用這種類型時,若是事件發起函數在主線程中執行,那麼回調函數另啓動一個子線程,若是事件發起函數在子線程執行,那麼回調函數就在這個子線程執行。

//onEventBusAsync,當使用這種類型時,無論事件發起函數在哪裏執行,都會另起一個線程去執行回調。

 

3.註冊事件 反註冊事件

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}
 
@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

4.發送事件

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
相關文章
相關標籤/搜索