EventBus是一個Android事件發(fā)布/訂閱輕量級框架
簡化了應(yīng)用程序內(nèi)各組件間、組件與后臺線程間的通信
使用場景:應(yīng)用程序內(nèi)各組件間碳柱、組件(fragment, Activity, Service等)與后臺線程間的通信构哺。
? ? 大白話講解(略抽象):這個框架相當(dāng)于?我們?與 雜志社?之間的關(guān)系 革答,當(dāng)我們向雜志社訂閱了一份雜志,那它就會在特定的是時間送到你手里曙强,當(dāng)然如果你不想要了也可以退訂残拐。還有一個簡單的概念?就是:雜志社不可能只想我們服務(wù)?當(dāng)別人也訂閱了相同的雜志?那它也得給別人送。你也可以當(dāng)VIP?讓它只為你服務(wù)碟嘴。
依賴文件 :
implementation'org.greenrobot:eventbus:3.2.0'
?開始應(yīng)用:
? ? 1溪食、 訂閱雜志
? ? 2 、接收消息? === 相當(dāng)于?動畫里?房子外的郵箱
? ? ? ?注解介紹:★★★★★★★重要程度?滿顆星
@Subscribe( threadMode = ThreadMode.BACKGROUND,sticky =true )
threadMode =? ThreadMode.BACKGROUND :? 事件主線程里發(fā)出來?那么該事件就會在新的線程里運(yùn)行娜扇。?如果是子線?則事件直接在發(fā)布者的線程中執(zhí)行错沃。?這個線程模式下?禁止更新UI。
threadMode =?MAIN:事件的處理會在主線程中執(zhí)行雀瓢,常用于更新UI枢析。
threadMode =?POSTING(默認(rèn))該事件在哪個線程發(fā)布出來的,事件的處理 就會在哪個線程中運(yùn)行? 盡量不要做耗時操作刃麸。
threadMode = ASYNC? 這個最簡單了?不管事件從哪個線程中發(fā)出來? 它都開啟子線程運(yùn)行? ?禁止更新U醒叁。
sticky = true? 粘性事件? :大白話:郵局派人給你去送郵件?如果你不在家?他放在你的郵箱里?保證你想要就能拿到? ?可以先不注冊。
sticky = false? 普通事件 :大白話:郵局派人給你去送郵件?如果你不在家?他就給你丟掉了?讓你想要也要不到? ? ? ? ?必須注冊嫌蚤。
? ? 方法?使用public void? 方法名隨意? 參數(shù)?最好使用JavaBean?因為要傳遞信息
?3? 辐益、退訂雜志
? ? ? ? ?不需要了?就退掉? 防止資源浪費(fèi)
以上是訂閱EventBus的簡單邏輯
? ? 發(fā)送雜志
????????????????EventBus.getDefault().post(? new Event()? ?);?