Android 元件通訊庫EventBus原始碼分析

2021-07-02 19:55:42 字數 671 閱讀 9090

很早之前就開通了csdn,一直想寫點部落格可是怎麼說呢,感覺一直沒有時間(其實就是比較懶)。最近稍微空閒點了,趁中午寫個第一篇,希望以後能多寫點,多記錄點。

下面看看原始碼,涉及多執行緒,所以閱讀這個原始碼對多執行緒程式設計的水平

首先看下 register 方法。

private synchronized void register(object subscriber, boolean sticky, int priority) }

首先,subscribermethod 類裡面有定義了method(根據反射獲得的方法),threadmode(執行緒型別的列舉),hashcode也是method的hashcode,從某種意義上來說就是對註冊後的元件中的方法進行乙個解析後的乙個資料模型。解析的方法就是subscribermethodfinder.findsubscribermethods(subscriber.getclass());  subscribermethodfinder 類中有個static的map儲存著所有以前找過的方法,避免重複查詢,畢竟查詢的時候是通過反射,反射的效率是比較低的,雖然已經有所優化,但是遍歷所有方法所帶來的效率損失還不如使用hashmap來做快取好,key就是傳進來的class name,由於hashmap不是執行緒安全,所以加個同步。

接下去是對方法的解析,for迴圈遍歷所有方法,用hashset儲存生成的方法字串

Android元件之間通訊

如rxbus,一般你只需要訂閱如下 task rxbus.toobserverable databean.class subscribe card 以上我們一般在activity中啟動時訂閱,呼叫網路訪問後,根據rxbus註冊事件型別返回到activity中更新ui 但是必須在activity的on...

Android的元件通訊 intent

元件要通過intent宣告自己的條件,一般通過元件的元素來實現.intent可以啟動乙個activity,可以啟動乙個service,也可以發起乙個廣播 broadcast intent由以下幾個部分組成 動作 action 資料 data 分類 category 型別 type 元件 compon...

元件和元件通訊

全域性元件和區域性元件 父元件和子元件 元件的data 元件中的資料是分開的 元件是乙個單獨功能模組的封裝元件中不能直接訪問例項物件,且子元件不能直接訪問父元件的內容 父子元件通訊 props properties屬性的縮寫,父到子 可以做到型別限制,如下 emit事件 子到父 注意點 過程理解 子...