Eventbus3代碼分析(一):簡單使用


原因

之前一直是用的 eventbus2.4版本
eventbus很好用,因為實現(xiàn)解耦了,所以用起來很方便
但是,每次跟代碼,查從哪里發(fā)出的,都需要從bean入手
比較麻煩
之前也見過有插件,可以幫助查找對應(yīng)的源頭,只是項目原因,沒有使用
今天先簡單記錄一下使用


配置

之前用的eventbus2.4,對應(yīng)的配置為:

compile 'de.greenrobot:eventbus:2.4.0'

現(xiàn)在只需要修改版本即可

compile 'org.greenrobot:eventbus:3.0.0'

對應(yīng)的項目地址為:
https://github.com/greenrobot/EventBus

如果不依賴配置,想依賴對應(yīng)源碼的Module,可以下載源碼,做Module依賴


3.0和之前版本的區(qū)別

3.0和之前的版本,區(qū)別在于,3.0版本是用的注解:
例如:
之前是用的

  • onEvent()、
  • onEventAsync()、
  • onEventBackground()、
  • onEventMainThread()
    這4個方法。并且只能為這幾個方法。

現(xiàn)在的版本,是用過注解去完成的。
對應(yīng)之前的4個方法,現(xiàn)在是用注解完成的。
分別對應(yīng)

  • @Subscrible ,
  • @Subscrible(threadMode = ThreadMode.ASYNC),
  • @Subscribe(threadMode = ThreadMode.BACKGROUND),
  • @Subscribe(threadMode = ThreadMode.MAIN)

插件的使用

和之前版本區(qū)別,還有對應(yīng)的插件
具體源碼地址為:
https://github.com/kgmyshin/eventbus3-intellij-plugin

對應(yīng)的地址,有源碼,也有使用方法

安裝插件

因為已經(jīng)安裝了,就不詳細(xì)解釋了
和其他插件安裝類似
大體根據(jù)上面的圖,Plugins選項中,點擊安裝,重啟即可

安裝后,可以在對應(yīng)的位置找到



簡單說明

對應(yīng)的說明,可以在
https://github.com/greenrobot/EventBus
http://greenrobot.org/eventbus/documentation/how-to-get-started/
中找到
2個文檔,

  • 一個說在onCreate或者構(gòu)造中注冊


  • 一個說通常在onStart中注冊,在 onStop中取消


其實,個人覺得,根據(jù)android的生命周期



做對應(yīng)就行,不讓多次注冊,或者多次取消注冊即可。

當(dāng)然,為了防止多次注冊,可以在注冊前,先判斷一下:

if (!EventBus.getDefault().isRegistered(this)) {
    EventBus.getDefault().register(this);
}

簡單使用
  • 對應(yīng)的register 和 unregister

    • 這里可以在 onCreate中register,在onDestory中unregister
    • (推薦)也可以在onStart中register, 在onStop中unregister


  • 對應(yīng)發(fā)送的Bean

public class MessageEvent {
    public final String message;

    public MessageEvent(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
  • 注冊過的Activity或者Fragment中獲取Bean

    • 有地方發(fā)送對應(yīng)的Bean,注冊過的Activity或者Fragment就可以接收


  • 任何地方發(fā)送Bean信息

    • 比如,我們在跳轉(zhuǎn)到一個新的Activity的時候,發(fā)送信息


    • 對應(yīng)注冊過這個bean的地方,就可以接收到信息了
    • 比如,在新的activity給Main發(fā)送一條信息,返回后,可以收到(如果大家觀察仔細(xì),跳轉(zhuǎn)前,就已經(jīng)收到信息了)


  • 當(dāng)Activity還未啟動的時候,可以用@Subscribe(sticky = true)來接收

    • 例如,這里寫一個Future1Activity


    • 這個時候,通過postSticky來傳遞給還未啟動的Activity等


    • (上面代碼)傳遞給一個未啟動的Activity,情況是:



插件的好處

前面有說到插件
插件可以通過左邊的圖標(biāo), 連接發(fā)送和收到,對應(yīng)的代碼位置
讓代碼解耦的同時,也可以找到對應(yīng)的位置
(這樣,就不用每次都去找bean,再來找位置了)



其他

這里只是簡單介紹,會的不用參考

不會的,如果只是使用,可以參考
http://greenrobot.org/eventbus/documentation/how-to-get-started/
也可以參考,自己簡單使用的(use_little_demo中的 eventbus3test
https://github.com/2954722256/use_little_demo


下一篇我們可以了解Eventbus3代碼分析(二):注解入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容