EventBus是使用Android的開放源碼庫發佈/訂閱爲鬆耦合模式。EventBus使得脫鉤類與代碼,只需幾行中央通訊-簡化了代碼,消除依賴關係,並加快應用開發。
post
使用你的好處EventBus:這...
- 簡化組件之間的通訊
- 解耦事件發送者和接收者
- 與活動,片斷,和後臺線程表現良好
- 避免了複雜且容易出錯的依賴關係和生命週期問題
- 快; 專爲高性能而優化
- 很小(<50K JAR)
- 是在實踐中被證實與應用程序安裝100,000,000+
- 擁有先進的功能,如交付線程,用戶優先級等。
添加:性能
第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!"));