目錄:andorid jar/庫源碼解析 html
用於不一樣Activity,Service等之間傳遞消息(數據)。java
A頁面:onCreate定義 EventBus.getDefault().register(this);android
onDestroy定義 EventBus.getDefault().unregister(this);
緩存
添加public方法,一個Object參數(全部繼承與Object的對象),用於接收消息通知。post
B頁面:使用 EventBus.getDefault().post(new 對象); 通知消息(這個時候,若是是同一個類型對象,A中的方法能夠收到通知)this
EventBus.getDefault()
使用,雙重判斷,建立/獲取一個EventBus對象。spa
EventBus.getDefault().register(
一、註冊參數類對象,到EventBus的緩存中,線程
二、保存當前類,包含 Subscribe 註釋的public方法(且改方法只有一個參數)code
三、同時按照傳遞對象的類型(消息類型),對數據進行在分類存儲,便於查找。htm
四、而後循環,當前類的父類,一樣的操做,直到,父類StartWith android.、androidx.、java.、javax. 跳出循環
EventBus.getDefault().unregister(
一、移除註冊的對象,和方法信息,和註冊的方法成員的類型對應的類信息。
EventBus.getDefault().post(
一、從記錄註冊表中查找,當前參數對象對應的註冊類集合,數據記錄的時候,保存的能夠被調用的集合
二、進行循環調用。已註冊方法(知道cancelEventDelivery 被觸發,或者循環完成)。
三、方法有多種調用模式,其實內部就四種調用方式:a、直接調用方法。b、主線程,使用自定義Handler來調用方法。c、使用新建線程,來調用方法。d、線程池來調用方法。
implementation 'org.greenrobot:eventbus:3.1.1'