EventBus 入門和粘性事件(Sticky Events)
1.簡介
EventBus is a publish/subscribe event bus for Android and Java.
eventbus 是用於android和java 釋出和訂閱的事件匯流排。
優點:
- 簡化元件之間的通訊
- 體積小
- 將事件的傳送者和接受者分離
- 在activity fragment 執行緒之間效能優良
- 避免複雜且容易出錯的依賴關係和生命週期問題
- 程式碼簡單方便

EventBus-Publish-Subscribe.png
2.依賴
implementation 'org.greenrobot:eventbus:3.1.1'
3.定義事件
public static class MessageEvent { /* Additional fields if needed */ }
4.(宣告和註解事件接收方法)Declare and annotate your subscribing method
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {/* Do something */};
5.註冊和取消註冊
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); }
6.傳送事件
EventBus.getDefault().post(new MessageEvent()); EventBus.getDefault().post(new MessageEvent(“要傳送的內容”));
7.粘性事件(Sticky Events):就是在傳送事件之後再訂閱該事件也能收到該事件
EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)// sticky =true,可以接收粘性事件。 public void onEvent(MessageEvent event) { textField.setText(event.message); }