EventBus是android 下高效的發佈/訂閱事件總線機制,能夠代替傳統的Intent,Handler,BroadCast 或者Fragment,Activity,Service,線程之間傳遞數據,是一種發佈訂閱設計模式(觀察者模式)。android
如何使用呢?設計模式
1. 在要接收的Activity註冊訂閱者,EventBus.getDefault().register(this), 發送的方式是EventBus.getDefault().post();post
2. 在要接收的Activity裏面使用下面的方法中的一個或者多個接收事件:this
public void onEvent(Message msgEvent); // 該事件在哪一個線程發出的,onEvent就會在這個線程中運行,發佈和接收在同一個線程中。注意不能執行耗時操做,不然容易致使事件分發延遲。線程
public void onEventMainThread(MesssageEvent mevent);設計
不管事件在哪一個線程中發出來,都會在UI線程中執行onEventMainThread,這個能夠用來更新UI,也不能執行耗時操做事件
public void onEventBackgroud:get
若是事件是在UI線程中發佈的,會建立子線程執行,若是就是在子線程發佈,就在該子線程中執行it
public void onEventAsyncevent
不管是在哪一個線程中發佈,都會建立子線程去執行
3. 發佈後,誰來執行呢?
這裏就是根據發佈的參數和訂閱者的參數去匹配的,只要參數同樣,就去執行。