android EventBus總結

EventBus定義:

EventBus是一個基于觀察者模式的事件發(fā)布/訂閱框架,開發(fā)者通過極少的代碼去實現(xiàn)多個模塊之間的通信,而不需要以層層傳遞接口的形式去單獨構建通信橋梁。從而降低因多重回調導致的模塊間強耦合,同時避免產(chǎn)生大量內部類。擁有使用方便,性能高,接入成本低,支持多線程的優(yōu)點。

如何實現(xiàn)Eventbus

1.定義事件(事件是POJO(plain old java object)類型,不需要什么特別的需求)

public class MessageEvent {

public final String message;

public MessageEvent(String message) {

? this.message = message;

}

2.準備訂閱者(訂閱者實現(xiàn)事件處理方法(也叫做訂閱者方法),這個方法會在事件提交的時候被調用。這些是使用@Subscribe注解定義的。請注意EventBus 3的方法名字可以自由選擇(不像EventBus 2中約束的那樣)。)

// 當一個Message Event提交的時候這個方法會被調用

@Subscribe

public void onMessageEvent(MessageEvent event){

? ? Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();

}

// 當一個SomeOtherEvent被提交的時候這個方法被調用。

@Subscribe

public void handleSomethingElse(SomeOtherEvent event){

? ? doSomethingWith(event);

}

訂閱者也需要在bus中注冊和注銷。只有在訂閱者注冊的時候,他們才會收到事件。在Android中,Activities和Fragments通常綁定他們的生命周期.

@Override

public void onStart() {

? ? super.onStart();

? ? EventBus.getDefault().register(this);

}

@Override

public void onStop() {

? EventBus.getDefault().unregister(this);

? ? super.onStop();

}

3.提交事件(在代碼中任意位置提交事件。所有當前注冊的匹配事件類型的訂閱者都會收到事件。)

EventBus.getDefault().post(newMessageEvent("Hello everyone!"));

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • EventBus 是一個Android端優(yōu)化的 publish/subscribe 消息總線,簡化了應用程序各個組...
    王世軍Steven閱讀 1,871評論 4 21
  • 原文鏈接:http://blog.csdn.net/u012810020/article/details/7005...
    tinyjoy閱讀 564評論 1 5
  • 一、簡介 EventBus是由greenrobot 組織貢獻的一個Android事件發(fā)布/訂閱輕量級框架。Even...
    Mr丶sorrow閱讀 15,001評論 0 13
  • 前言:EventBus出來已經(jīng)有一段時間了,github上面也有很多開源項目中使用了EventBus。所以抽空學習...
    Kerry202閱讀 1,296評論 1 2
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,890評論 18 139