Android studio 上 EventBus2.4的初步使用

Android studio 上 EventBus的初步使用


之前 一直使用eclipse進(jìn)行Android開發(fā),現(xiàn)在到公司實(shí)習(xí),要求使用android studio 進(jìn)行開發(fā),適應(yīng)了幾天慢慢習(xí)慣了android studio,初步感覺確實(shí)比eclipse好用很多。

-------------------------------click--------------------------------------

步入正題,怎么在android studio 上使用eventbus。

首先,什么是eventbus,

eventbus? 事件總線,顧名思義,EventBus是一款針對Android優(yōu)化的發(fā)布/訂閱事件總線。

主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優(yōu)點(diǎn)是開銷小,代碼更優(yōu)雅。以及將發(fā)送者和接收者解耦。

jar包下載路徑:


2.4

http://jcenter.bintray.com/de/greenrobot/eventbus/2.4.0


3.0

http://jcenter.bintray.com/de/greenrobot/eventbus/3.0.0-beta1/

實(shí)戰(zhàn)

1、導(dǎo)包

在android studio中,導(dǎo)包不需要下載jar包導(dǎo)入,而是 直接在build.gradel中配置,android studio 會(huì)自動(dòng)在jcenter倉庫中找到所對應(yīng)的包

dependencies{

compile fileTree(dir:'libs',include: ['*.jar'])

compile'com.android.support:appcompat-v7:23.0.0'

//eventBus所需要的包

compile'de.greenrobot:eventbus:2.4.0'

}

注意

2、新建Event類,根據(jù)項(xiàng)目需求,構(gòu)建不同的Event類

/**

* event

* Created by Jeff on 2016/1/12.

*/

public classAnyEvent {

privateStringdiscribe;

//構(gòu)造函數(shù)

publicAnyEvent(String discribe) {

this.discribe= discribe;

}

//set/get方法

public voidsetDiscribe(String discribe) {

this.discribe= discribe;

}

publicStringgetDiscribe() {

returndiscribe;

}

}


3、發(fā)布事件

private voidinitView(){

btn=(Button)findViewById(R.id.btn);

btn.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

EventBus.getDefault().post(newAnyEvent("nothing is impossible!"));

}

});

}

4、在訂閱事件的activity上注冊(在oncreate()/onresume()中注冊,務(wù)必在ondestroy()/onpause()中取消注冊)

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

//注冊

EventBus.getDefault().register(this);

}


5、訂閱事件,有四種可選方式接收事件:

onEvent();??????? ------------------------->接收事件和分發(fā)事件在同一個(gè)線程中執(zhí)行

onEventMainThread();???? ----------->接收事件永遠(yuǎn)在UI線程執(zhí)行

onEventBackgroundThread();? --->分發(fā)事件在UI線程?啟動(dòng)子線程運(yùn)行接收事件:在分發(fā)線程接收事件

onAsync();?????? ------------------------->直接另起線程接收事件

/**

*使用onEvent來接收事件,那么接收事件和分發(fā)事件在一個(gè)線程中執(zhí)行

*@paramevent

*/

public voidonEvent(AnyEvent event) {

}

/**

*使用onEventMainThread來接收事件,那么不論分發(fā)事件在哪個(gè)線程運(yùn)行,接收事件永遠(yuǎn)在UI線程執(zhí)行

*可以用來更新UI

*@paramevent

*/

public voidonEventMainThread(AnyEvent event) {

}

/**

*使用onEventBackgroundThread來接收事件,如果分發(fā)事件在子線程運(yùn)行,那么接收事件直接在同樣線程

*運(yùn)行,如果分發(fā)事件在UI線程,那么會(huì)啟動(dòng)一個(gè)子線程運(yùn)行接收事件

*@paramevent

*/

public voidonEventBackgroundThread(AnyEvent event) {

}

/**

*使用onEventAsync接收事件,無論分發(fā)事件在(UI或者子線程)哪個(gè)線程執(zhí)行,接收都會(huì)在另外一個(gè)子線程執(zhí)行

*@paramevent

*/

public voidonEventAsync(AnyEvent event) {

}

6、在訂閱事件的activity上取消注冊(在oncreate()/onresume()中注冊,務(wù)必在ondestroy()/onpause()中取消注冊)


@Override

protected voidonDestroy() {

super.onDestroy();

EventBus.getDefault().unregister(this);

}



EventBus 3.0的用法詳解(一)

EventBus 3.0的用法詳解(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,532評論 25 708
  • 項(xiàng)目到了一定階段會(huì)出現(xiàn)一種甜蜜的負(fù)擔(dān):業(yè)務(wù)的不斷發(fā)展與人員的流動(dòng)性越來越大,代碼維護(hù)與測試回歸流程越來越繁瑣。這個(gè)...
    fdacc6a1e764閱讀 3,226評論 0 6
  • 前言我從去年開始使用 RxJava ,到現(xiàn)在一年多了。今年加入了 Flipboard 后,看到 Flipboard...
    占導(dǎo)zqq閱讀 9,203評論 6 151
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 圖片上女人手中掌控著門把手,眼睛幽幽看向門里,擋在出門必經(jīng)的出口上。她身在門外,卻不在意門外,這副身體姿態(tài)展現(xiàn)的是...
    燈燈007閱讀 387評論 7 0