簡(jiǎn)述
EventBus是一款針對(duì)Android優(yōu)化的發(fā)布/訂閱事件總線倍权。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service外傅,線程之間傳遞消息.優(yōu)點(diǎn)是開銷小,代碼更優(yōu)雅俩檬,以及將發(fā)送者和接收者解耦萎胰。
告知觀察者事件發(fā)生時(shí)通過EventBus.post函數(shù)實(shí)現(xiàn),這個(gè)過程叫做事件的發(fā)布棚辽,觀察者被告知事件發(fā)生叫做事件的接收技竟,是通過下面的訂閱函數(shù)實(shí)現(xiàn)的。
EventBus的源碼下載
https://github.com/greenrobot/EventBus
EventBus新版本3.0的使用
1屈藐、關(guān)聯(lián)
在app的build.gradle中添加EventBus的依賴庫(kù):
compile 'org.greenrobot:eventbus:3.0.0'
2榔组、注冊(cè)
EventBus.getDefault().register(this);//在AudioPlayerActivity的onCreate方法中注冊(cè)EventBus
3、訂閱方法(在這里接收消息并做相應(yīng)處理)
//注意:訂閱方法不能為私有的(private)
@Subscribe(threadMode = ThreadMode.MAIN,sticky = false,priority = 0)
public void showData(MediaItem mediaItem) {//傳入一個(gè)方法作為標(biāo)識(shí)
showViewData();//顯示數(shù)據(jù)
checkPlaymode();//校驗(yàn)播放模式
}
4联逻、取消注冊(cè)
EventBus.getDefault().unregister(this);//在onDestroy中取消注冊(cè)
5搓扯、發(fā)消息
EventBus.getDefault().post(mediaItem);//在MusicPlayerService的onPrepared方法中,利用EventBus發(fā)送消息
使用方法參考博客:http://blog.csdn.net/harvic880925/article/details/40660137
新版3.0與老版本的區(qū)別
1包归、我們可以自定義訂閱方法名,即訂閱方法名不再?gòu)?qiáng)制要求以O(shè)nEvent開頭,可以自己定義谭贪。
2俭识、訂閱方法的線程模式ThreadMode可以配置洞渔,幾個(gè)方法可以通用一個(gè)參數(shù),可以設(shè)置接收的優(yōu)先級(jí)堤瘤,誰(shuí)的優(yōu)先級(jí)的數(shù)值越大本辐,誰(shuí)的優(yōu)先級(jí)就越高医增,就優(yōu)先收到消息叶骨。