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