EventBus官方教程

weixin_33895657發表於2018-05-07

說明 :

本文翻譯自官網,如英文較好者可自行去官網檢視,本文如有錯誤,往眾大神多多指出!

英文能力差,理解能力差(本人翻譯生硬),想快速入門,可看我另一篇部落格一篇搞定EventBus

事件匯流排:Android事件

EventBus是一個開源庫的Android和java使用釋出/訂閱為 鬆耦合模式。EventBus使中央通訊能夠用幾行程式碼解耦類——簡化程式碼,消除依賴關係,加速應用程式開發。


8796361-897aefadac7b9a29.png

你使用EventBus的好處:

  • 簡化元件之間的通訊
  • 解耦事件傳送者和接收者
  • 使用UI artifacts (例如activity、fragment)和後臺執行緒
  • 避免複雜易出錯的依賴和生命週期問題
  • 快速;專門優化高效能
  • 很小 (<50k jar)
  • 實踐證明100000000 +安裝的應用程式
  • 具有傳輸執行緒、使用者優先順序等高階特性

進一步事件匯流排特性

  • Convenient Annotation based API: 簡單放置 @Subscribe annotation 到您的訂閱方法. 由於註釋的生成時間索引, EventBus不需要在應用程式執行時做註解反射。
  • Android main thread delivery: 當與UI互動時,EventBus可以在主執行緒中傳遞事件,而不管釋出的是什麼事件。
  • Background thread delivery: 如果您的訂戶執行長時間執行的任務,EventBus也可以使用後臺執行緒來避免UI阻塞。
  • Event & Subscriber inheritance: 在EventBus中,物件導向的範例適用於事件和訂閱伺服器類。假設事件類A是B的超類,B型別的張貼事件也將被髮布給感興趣的使用者。同樣地,考慮了使用者類的繼承。
  • Jump start:您可以立即啟動-而不需要使用預設EventBus例項配置任何程式碼,可以從程式碼中的任何地方使用。
  • Configurable: 為了將EventBus調整為您的需求,可以使用Builder模式調整其行為。

事件特徵集.

將EventBus新增到您的專案中

EventBus可在JCenter和Maven Central上使用,因此只需將依賴項新增到專案中即可。

EventBus開始使用

使用EnvestBUS的第一步,請單擊 documentation / tutorial
, 特別是getting started guide.
以上便是官方文件翻譯而來

如何在3個步驟中啟動EnvestBUS

EnviBus API與1-2-3一樣容易。
在我們開始之前 確保將EnviBUS新增到專案中作為依賴項.

Step 1: 定義事件

事件是POJO (普通java物件)沒有任何具體的要求。

public class MessageEvent {

    public final String message;

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

第2步:準備subscribers

訂閱伺服器實現事件處理方法 (也稱為 “subscriber methods”) 這將在事件釋出時被呼叫。這些都是用 @Subscribe annotation.
注意,EnvestBUS 3可以自由選擇方法名稱(如EnvestBUS 2中沒有命名約定)。

// 當釋出訊息事件時,將呼叫此方法(在ToST的UI執行緒中)
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
 
// 當釋出某個事件時,將呼叫此方法。
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

Subscribers 需要 註冊登出 從事件匯流排上. 只有註冊使用者時,他們將收到事件.在Android中,在活動和片段中,你通常應該註冊 根據它們的生命週期. 大多數情況下,啟動/停止都可以正常工作。:

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

第三步:釋出事件
從程式碼的任何部分發布事件。所有與事件型別匹配的當前註冊使用者將接收它。

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

Learn more

Have a look at the full documentation to learn about all features of EventBus.

相關文章