Android 認識EventBus輕量級事件匯流排框架

艾陽丶發表於2017-05-11

EventBus

定義:是一個釋出、訂閱的輕量級事件匯流排框架。

新增gradle依賴:dependencies { compile 'de.greenrobot:eventbus:2.4.0' }

關係:訂閱者可以訂閱多個事件;釋出者可以釋出任何事件;釋出者同時可以是訂閱者。

操作:EventBus.getDefault()獲取例項物件。

EventBus.getDefault().register(this);//訂閱者
EventBus.getDefault().post(object);//釋出者
 
EventBus.getDefault().unregister();//取消訂閱

使用:
1:onEventMainThread:代表這個方法會在UI執行緒執行
2:onEventPostThread:代表這個方法會在當前執行緒執行

3:onEventBackgroundThread:代表非UI執行緒會在同執行緒執行,是的話在後臺執行,一個一個呼叫。

4:onEventAsync:代表加入後臺任務,使用執行緒池呼叫,不是一個一個呼叫。

原理:
EventBus內部封裝4個onEvent方法,然後post的時候,根據post引數型別 自動匹配執行的方法(物件導向多型性過載)。

register(this)訂閱在當前類,就會遍歷當前類所有的方法,找到onEvent開發的方法,然後進行Map儲存,key為class型別,值為物件例項。

優勢:

簡化程式碼,減少系統開銷,降低耦合,清晰簡潔。

可以在Activity、Fragment、Service等元件互動通訊。

可以替代Thread+Handle非同步執行緒間傳遞訊息。

可以替代Intent、Broadcast傳遞訊息。




相關文章