EventBus3.0應(yīng)用

一、簡(jiǎn)介

? ? ? ? 標(biāo)準(zhǔn)解釋?zhuān)篈ndroid optimized event bus that simplifies communication between Activities,Fragments, Threads, Services, etc. Less code, better quality.

??????? 瞎翻譯:簡(jiǎn)化Activity、Fragment偏竟、Thread牵署、Service間通信的Android優(yōu)化事件總線(xiàn)豺总,不僅代碼量不大隔显,而且效率很高项鬼。

? ? ? ? 事件總線(xiàn):基于觀察者模式的事件發(fā)布/訂閱框架。類(lèi)似框架還有otto 耻陕,EventBus官網(wǎng)在這里 拙徽、GitHub網(wǎng)址在這里 ,詳細(xì)介紹還是移步官網(wǎng)(英文版诗宣,一臉懵逼ing斋攀。。梧田。),好啦侧蘸,官圖解釋如下:

EventBus-Publish-Subscribe


二裁眯、應(yīng)用

1、添加依賴(lài)

??????? 當(dāng)然是在module下的gradle文件中了讳癌,哈哈穿稳!

compile'org.greenrobot:eventbus:3.0.0'

2、注冊(cè)與注銷(xiāo)

??????? 2.1晌坤、注冊(cè)

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

EventBus.getDefault().register(this);

}

??????? 2.2逢艘、注銷(xiāo)

@Override

protected void onDestroy() {

super.onDestroy();

EventBus.getDefault().unRegister(this);

}

3、事件發(fā)送

??????? 3.1骤菠、普通事件

EventBus.getDefault().post("str");//

??????? 3.2它改、粘性事件

EventBus.getDefault().postSticky("str");//

4、事件接收與處理

??????? 4.1商乎、Activity中接收

@Subscribe(threadMode= ThreadMode.MAIN,priority=100)

public void onEventMainActivity(String string) {

Toast.makeText(getApplicationContext(),"主界面收到消息",Toast.LENGTH_LONG).show();

}

??????? 4.2央拖、Fragment中接收

@Subscribe(threadMode= ThreadMode.MAIN,sticky=true,priority=100)

public void onEventOnFragment(String message){

textView.setText("點(diǎn)擊evnetbus之后");

}

5、效果

??????? 5.1、發(fā)送消息之前


發(fā)送消息之前

??????? 5.2鲜戒、發(fā)送消息之后


發(fā)送消息之后

6专控、其他

??????? 6.1、注解參數(shù)

??????? 6.1.1遏餐、線(xiàn)程模式

??????? (1)postThread:用戶(hù)將被調(diào)用在同一個(gè)線(xiàn)程中伦腐,這是發(fā)布事件(這是默認(rèn)值)。事件傳遞意昧著最少的開(kāi)銷(xiāo)失都,因?yàn)樗耆苊饬司€(xiàn)程切換柏蘑。因此,這是推薦的模式嗅剖,來(lái)處理簡(jiǎn)單的任務(wù)辩越,如果是已知的完成是一個(gè)很短的時(shí)間,而不需要主線(xiàn)程信粮。事件處理使用此模式必須迅速返回黔攒,以避免阻塞發(fā)布線(xiàn)程,這可能是主線(xiàn)程强缘。

??????? (2)MainThread:用戶(hù)將被調(diào)用在主線(xiàn)程(UI線(xiàn)程)督惰。如果發(fā)布線(xiàn)程是主線(xiàn)程,事件處理程序方法將直接調(diào)用旅掂。使用此模式的事件處理程序必須快速返回赏胚,避免阻塞主線(xiàn)程。

??????? (3)BackgrounThread:將在后臺(tái)線(xiàn)程中調(diào)用訂閱者商虐。如果發(fā)布線(xiàn)程不是主線(xiàn)程觉阅,則事件處理程序方法將被在發(fā)布線(xiàn)程中直接調(diào)用。如果線(xiàn)程是主線(xiàn)程秘车,eventbus采用單獨(dú)的一個(gè)后臺(tái)線(xiàn)程典勇,將按順序調(diào)用所有的事件。使用此模式的事件處理程序應(yīng)嘗試快速返回叮趴,以避免阻塞后臺(tái)線(xiàn)程割笙。

??????? (4)Async:事件處理程序方法在一個(gè)單獨(dú)的線(xiàn)程中調(diào)用。這總是獨(dú)立于發(fā)布線(xiàn)程和主線(xiàn)程眯亦。發(fā)布事件從來(lái)不會(huì)等待使用這種模式的事件處理程序方法伤溉。事件處理程序方法使用此模式,如果他們的執(zhí)行可能需要一段時(shí)間妻率,例如用于網(wǎng)絡(luò)訪(fǎng)問(wèn)乱顾。避免觸發(fā)大量在同一時(shí)間運(yùn)行長(zhǎng)時(shí)間運(yùn)行的異步處理程序方法以限制并發(fā)線(xiàn)程的數(shù)目。eventbus使用一個(gè)線(xiàn)程池來(lái)有效地重用已完成的異步事件處理程序通知的線(xiàn)程舌涨。

threadMode= ThreadMode.MAIN,//指運(yùn)行的線(xiàn)程:postThread糯耍、MainThread扔字、BackgrounThread、Async

? ? ? ? 6.1.2温技、是否接收粘性事件

sticky=true,//是否接收粘性事件

?????? 6.1.3革为、優(yōu)先級(jí)

??????? 優(yōu)先級(jí),如果同時(shí)存在多個(gè)觀察者(threadMode相同)舵鳞,我們是不是可以通過(guò)優(yōu)先級(jí)的設(shè)定震檩,來(lái)決定哪一個(gè)觀察者獲得事件或者消息的順序,這樣就更加靈活了

priority=100//

??????? 6.2蜓堕、粘性與非粘性的區(qū)別

? ? ? ? 粘性事件是指:一些事件進(jìn)行信息感興趣的事件后發(fā)布抛虏。 例如,一個(gè)事件信號(hào),一些初始化完成√撞牛或者如果你有傳感器位置數(shù)據(jù)和你想抓住最近的值迂猴。而不是實(shí)現(xiàn)自己的緩存,您可以使用黏性的事件。EventBus保持過(guò)去的事件的特定類(lèi)型在內(nèi)存中背伴。黏性的事件可以交付給用戶(hù)或顯式查詢(xún)沸毁。因此,你不需要任何特殊的邏輯來(lái)考慮可用的數(shù)據(jù)。粘性事件發(fā)布,開(kāi)始一個(gè)新的活動(dòng)傻寂。在注冊(cè)過(guò)程中粘性用戶(hù)所有方法將立即得到前面貼粘性的事件息尺。

??????? 因此兩者區(qū)別在于接收并處理事件的類(lèi)是否創(chuàng)建,如若創(chuàng)建疾掰,兩種事件均可以搂誉,如若未創(chuàng)建,那么就用粘性事件静檬。

??????? 另:本人水平有限炭懊,若有不足甚至錯(cuò)誤的地方,歡迎批評(píng)指正拂檩,本人感激不盡凛虽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锌杀,一起剝皮案震驚了整個(gè)濱河市干发,隨后出現(xiàn)的幾起案子嫉沽,更是在濱河造成了極大的恐慌,老刑警劉巖钉迷,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钠署,居然都是意外死亡糠聪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)谐鼎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舰蟆,“玉大人,你說(shuō)我怎么就攤上這事∩砗Γ” “怎么了味悄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)塌鸯。 經(jīng)常有香客問(wèn)我侍瑟,道長(zhǎng),這世上最難降的妖魔是什么丙猬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任涨颜,我火速辦了婚禮,結(jié)果婚禮上茧球,老公的妹妹穿的比我還像新娘庭瑰。我一直安慰自己,他們只是感情好抢埋,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布弹灭。 她就那樣靜靜地躺著,像睡著了一般羹令。 火紅的嫁衣襯著肌膚如雪鲤屡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天福侈,我揣著相機(jī)與錄音酒来,去河邊找鬼。 笑死肪凛,一個(gè)胖子當(dāng)著我的面吹牛堰汉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伟墙,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翘鸭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了戳葵?” 一聲冷哼從身側(cè)響起就乓,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拱烁,沒(méi)想到半個(gè)月后生蚁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戏自,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年邦投,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擅笔。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡志衣,死狀恐怖屯援,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情念脯,我是刑警寧澤狞洋,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站和二,受9級(jí)特大地震影響徘铝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惯吕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一惕它、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧废登,春花似錦淹魄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至羽戒,卻和暖如春缤沦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背易稠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工缸废, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驶社。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓企量,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親亡电。 傳聞我的和親對(duì)象是個(gè)殘疾皇子届巩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • EventBus 是一個(gè)Android端優(yōu)化的 publish/subscribe 消息總線(xiàn),簡(jiǎn)化了應(yīng)用程序各個(gè)組...
    王世軍Steven閱讀 1,858評(píng)論 4 21
  • 原文鏈接:http://blog.csdn.net/u012810020/article/details/7005...
    tinyjoy閱讀 550評(píng)論 1 5
  • 對(duì)于Android開(kāi)發(fā)老司機(jī)來(lái)說(shuō)肯定不會(huì)陌生,它是一個(gè)基于觀察者模式的事件發(fā)布/訂閱框架份乒,開(kāi)發(fā)者可以通過(guò)極少的代碼...
    飛揚(yáng)小米閱讀 1,480評(píng)論 0 50
  • 一恕汇、簡(jiǎn)介 EventBus是由greenrobot 組織貢獻(xiàn)的一個(gè)Android事件發(fā)布/訂閱輕量級(jí)框架。Even...
    Mr丶sorrow閱讀 14,982評(píng)論 0 13
  • 周一學(xué)習(xí)活法中三小節(jié):時(shí)時(shí)反省或辖,不忘磨礪人格拇勃;磨礪心志的“六項(xiàng)精進(jìn)”;將感謝刻于童心的“隱蔽念佛”孝凌。四點(diǎn)鐘下班以后...
    四廠羅聰閱讀 200評(píng)論 0 0