EventBus3.0使用(一)

3Steps簡(jiǎn)單使用EventBus3.0

在使用EventBus 先在Gradle 添加依賴

compile 'org.greenrobot:eventbus:3.0.0'
  • 定義Event事件乡革,沒(méi)有特別要求就是用來(lái)發(fā)送,傳遞亚情,與接收的事件妄痪,可以是String或者是java object。例如:
  public class MessageEvent {    
   public final String message;    
   public MessageEvent(String message) {      
         this.message = message;   
   }
}
  • 訂閱事件
    使用@Subscribe注解型來(lái)定義一個(gè)訂閱事件的方法楞件,并且指明線程模式衫生。例如:
//當(dāng)一個(gè)MessageEvent 被post的時(shí)候,此方法會(huì)被回調(diào)土浸,并且執(zhí)行在UI線程
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {    
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
//當(dāng)SomeOtherEvent被post的時(shí)候罪针,此方法會(huì)被回調(diào) 
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {    
doSomethingWith(event);
}

訂閱者需要接收事件,還必須注冊(cè)與反注冊(cè)在Activity或者在Fragment的生命周期上黄伊。

@Override
public void onStart() {   
 super.onStart();    
EventBus.getDefault().register(this);
}
@Override
public void onStop() {   
EventBus.getDefault().unregister(this);   
 super.onStop();
}
  • 發(fā)布事件
    可以在任何你想的代碼上寫(xiě)發(fā)布事件泪酱,然后注冊(cè)了的地方將會(huì)接收到。例如:
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

傳遞線程ThreadMode

EventBus 可以為你處理訂閱事件所在的線程还最,在上面講到的一個(gè)訂閱事件的處理上定義了在ThreadMode.Main即主線程墓阀,ThreadMode一共有四種模式,分別是POSTING拓轻、MAIN岂津、BACKGROUND與ASYNC。

  • ThreadMode: POSTING
    這種模式是與發(fā)布所在的線程同在一個(gè)線程悦即,這個(gè)模式回調(diào)是最快的吮成。
@Subscribe(threadMode = ThreadMode.POSTING)
 // ThreadMode is optional here
public void onMessage(MessageEvent event) {    
      log(event.message);
}
  • ThreadMode: MAIN
    回調(diào)將在主線程中回調(diào),也稱UI線程辜梳,如果發(fā)布事件的是在在主線程粱甫,那么此模式為T(mén)hreadMode: POSTING,可以快速回調(diào)作瞄。
// Called in Android UI's main thread
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessage(MessageEvent event) {    
textField.setText(event.message);
}
```
* ThreadMode: BACKGROUND
將在后臺(tái)線程調(diào)用茶宵。如果發(fā)布線程不是主線程,事件處理方法將直接在發(fā)布線程調(diào)用宗挥。如果發(fā)布線程是主線程乌庶,EventBus使用單個(gè)后臺(tái)線程調(diào)用种蝶。
```java
// Called in the background thread
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onMessage(MessageEvent event){    
saveToDisk(event.message);
}
```
* ThreadMode:ASYNC
事件處理方法被稱為在一個(gè)單獨(dú)的線程。這始終是獨(dú)立于發(fā)布線程和主線程,EventBus使用一個(gè)線程池來(lái)有效地重用完成的異步事件處理程序的通知線程瞒大。
```java
// Called in a separate thread
@Subscribe(threadMode = ThreadMode.ASYNC)
public void onMessage(MessageEvent event){    
backend.send(event.message);
}
```
####下一篇[EventBus3.0使用(二)](http://www.reibang.com/p/3a7b6c2b4987)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末螃征,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子透敌,更是在濱河造成了極大的恐慌盯滚,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酗电,死亡現(xiàn)場(chǎng)離奇詭異魄藕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)撵术,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)背率,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嫩与,你說(shuō)我怎么就攤上這事寝姿。” “怎么了蕴纳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵会油,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我古毛,道長(zhǎng)翻翩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任稻薇,我火速辦了婚禮嫂冻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塞椎。我一直安慰自己桨仿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布案狠。 她就那樣靜靜地躺著服傍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骂铁。 梳的紋絲不亂的頭發(fā)上吹零,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音拉庵,去河邊找鬼灿椅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茫蛹。 我是一名探鬼主播操刀,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婴洼!你這毒婦竟也來(lái)了骨坑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤窃蹋,失蹤者是張志新(化名)和其女友劉穎卡啰,沒(méi)想到半個(gè)月后静稻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體警没,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年振湾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杀迹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡押搪,死狀恐怖树酪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情大州,我是刑警寧澤续语,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厦画,受9級(jí)特大地震影響疮茄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜根暑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一力试、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧排嫌,春花似錦畸裳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至颇象,卻和暖如春伍伤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夯到。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工嚷缭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓阅爽,卻偏偏與公主長(zhǎng)得像路幸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子付翁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • EventBus 是一個(gè)Android端優(yōu)化的 publish/subscribe 消息總線,簡(jiǎn)化了應(yīng)用程序各個(gè)組...
    王世軍Steven閱讀 1,852評(píng)論 4 21
  • 原文鏈接:http://blog.csdn.net/u012810020/article/details/7005...
    tinyjoy閱讀 546評(píng)論 1 5
  • EventBus 官網(wǎng):鏈接版本:3.0.0 Get Started 添加依賴gradle: 定義事件 注冊(cè)訂閱者...
    Arnold_J閱讀 378評(píng)論 0 2
  • 項(xiàng)目到了一定階段會(huì)出現(xiàn)一種甜蜜的負(fù)擔(dān):業(yè)務(wù)的不斷發(fā)展與人員的流動(dòng)性越來(lái)越大简肴,代碼維護(hù)與測(cè)試回歸流程越來(lái)越繁瑣。這個(gè)...
    fdacc6a1e764閱讀 3,181評(píng)論 0 6
  • 突如其來(lái)的調(diào)科電話 2011年7月26日百侧,我正在整理剛做完手術(shù)的手術(shù)間砰识,忽然電話響起,我走出手術(shù)間佣渴,站在外走廊上接...
    燕尾無(wú)聲閱讀 1,006評(píng)論 5 4