原因
之前一直是用的 eventbus2.4版本
eventbus很好用,因為實現(xiàn)解耦了,所以用起來很方便
但是,每次跟代碼,查從哪里發(fā)出的,都需要從bean入手
比較麻煩
之前也見過有插件,可以幫助查找對應的源頭,只是項目原因,沒有使用
今天先簡單記錄一下使用
配置
之前用的eventbus2.4,對應的配置為:
compile 'de.greenrobot:eventbus:2.4.0'
現(xiàn)在只需要修改版本即可
compile 'org.greenrobot:eventbus:3.0.0'
對應的項目地址為:
https://github.com/greenrobot/EventBus
如果不依賴配置,想依賴對應源碼的Module,可以下載源碼,做Module依賴
3.0和之前版本的區(qū)別
3.0和之前的版本,區(qū)別在于,3.0版本是用的注解:
例如:
之前是用的
- onEvent()、
- onEventAsync()、
- onEventBackground()、
- onEventMainThread()
這4個方法。并且只能為這幾個方法。
現(xiàn)在的版本,是用過注解去完成的。
對應之前的4個方法,現(xiàn)在是用注解完成的。
分別對應
- @Subscrible ,
- @Subscrible(threadMode = ThreadMode.ASYNC),
- @Subscribe(threadMode = ThreadMode.BACKGROUND),
- @Subscribe(threadMode = ThreadMode.MAIN)
插件的使用
和之前版本區(qū)別,還有對應的插件
具體源碼地址為:
https://github.com/kgmyshin/eventbus3-intellij-plugin
對應的地址,有源碼,也有使用方法
安裝插件
因為已經(jīng)安裝了,就不詳細解釋了
和其他插件安裝類似
大體根據(jù)上面的圖,Plugins選項中,點擊安裝,重啟即可
安裝后,可以在對應的位置找到
簡單說明
對應的說明,可以在
https://github.com/greenrobot/EventBus
http://greenrobot.org/eventbus/documentation/how-to-get-started/
中找到
2個文檔,
-
一個說在onCreate或者構(gòu)造中注冊
-
一個說通常在onStart中注冊,在 onStop中取消
其實,個人覺得,根據(jù)android的生命周期
做對應就行,不讓多次注冊,或者多次取消注冊即可。
當然,為了防止多次注冊,可以在注冊前,先判斷一下:
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
簡單使用
-
對應的register 和 unregister
- 這里可以在 onCreate中register,在onDestory中unregister
-
(推薦)也可以在onStart中register, 在onStop中unregister
-
對應發(fā)送的Bean
- 這里我們用官方
- http://greenrobot.org/eventbus/documentation/how-to-get-started/
- 對應的Bean例子
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
-
注冊過的Activity或者Fragment中獲取Bean
-
有地方發(fā)送對應的Bean,注冊過的Activity或者Fragment就可以接收
-
-
任何地方發(fā)送Bean信息
-
比如,我們在跳轉(zhuǎn)到一個新的Activity的時候,發(fā)送信息
- 對應注冊過這個bean的地方,就可以接收到信息了
-
比如,在新的activity給Main發(fā)送一條信息,返回后,可以收到(如果大家觀察仔細,跳轉(zhuǎn)前,就已經(jīng)收到信息了)
-
-
當Activity還未啟動的時候,可以用@Subscribe(sticky = true)來接收
-
例如,這里寫一個Future1Activity
-
這個時候,通過postSticky來傳遞給還未啟動的Activity等
-
(上面代碼)傳遞給一個未啟動的Activity,情況是:
-
插件的好處
前面有說到插件
插件可以通過左邊的圖標, 連接發(fā)送和收到,對應的代碼位置
讓代碼解耦的同時,也可以找到對應的位置
(這樣,就不用每次都去找bean,再來找位置了)
和
其他
這里只是簡單介紹,會的不用參考
不會的,如果只是使用,可以參考
http://greenrobot.org/eventbus/documentation/how-to-get-started/
也可以參考,自己簡單使用的(use_little_demo中的 eventbus3test)
https://github.com/2954722256/use_little_demo
下一篇我們可以了解Eventbus3代碼分析(二):注解入門