android EvenBus

組件間通信框架 EvenBus


在項目中首先添加EvenBus的jar包


整體過程大致可以分爲3類:

1.在onCreat中使用EvenBus.getInstatnce().register(this);

2.使用EventBus.getDefault().post(object)進行事件的分發。

onEvenMainThread, (方法在UI線程執行)

onEvenPostThread,(方法在當前發佈事件的線程執行)

onEventBackgroundThread,(如果在非UI線程發佈的事件,則直接執行,和發佈在同一個線程中。如果在UI線程發佈的事件,則加入後臺任務隊列,使用線程池一個接一個調用)

onEventAsyns(加入後臺任務隊列,使用線程池調用,注意沒有BackgroundThread中的一個接一個)

接收post傳遞的參數並進行操作。

3.在onDestroy中使用EventBus.getDefault().unregister(this);



一.第一步中,對事件進行訂閱,調用EvenBus.getInstatnce().register(this)後,會遍歷該類下所有以onEvent開頭的方法,存在一個Map中。


二.第二步,通過post中傳遞的參數類型,進行判斷執行哪一個onEven方法。其實在第一步的Map中的key就是post的class類型。


三。第三步,註銷事件訂閱。


關於EventBus的使用,如果需要使用很多觀察者模式。 比如,你正在開發一個東西,需要監聽網絡狀態變化,App的安裝情況,內容的下載情況。當存在很多觀察者模式,「如何將這些事件通知到監聽者」是可以複用的模塊,這就是EventBus存在的意義。這裏需要大家想明白一個問題,觀察者模式本身就是一個可以複用的模塊。


如果項目裏面有大量的事件交互,那麼還是可以通過EventBus來實現,否則還是推薦自己在模塊內部實現觀察者模式


如果多個方法參數都一樣,post一個此參數,會多個方法調用;

使用EventBus的時候,創建一個事件類,把你的每一個參數(或者可能發生衝突的參數),封裝成一個類。

public class Event{

     public static 參數;

............

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章