eventbus和觀察者是一樣的,需要先導(dǎo)入eventbus的架包。
十余年的仙桃網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整仙桃建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“仙桃網(wǎng)站設(shè)計(jì)”,“仙桃網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。基本的使用步驟就是如下4步,
定義事件類型:
`public class MyEvent {}`
定義事件處理方法:
`public void onEventMainThread`
注冊(cè)訂閱者:
`EventBus.getDefault().register(this)`
發(fā)送事件:
`EventBus.getDefault().post(new MyEvent())`
EventBus包含4個(gè)ThreadMode:PostThread,MainThread,BackgroundThread,Async
MainThread我們已經(jīng)不陌生了;我們已經(jīng)使用過。
具體的用法,極其簡(jiǎn)單,方法名為:onEventPostThread, onEventMainThread,onEventBackgroundThread,onEventAsync即可
具體什么區(qū)別呢?
onEventMainThread代表這個(gè)方法會(huì)在UI線程執(zhí)行
onEventPostThread代表這個(gè)方法會(huì)在當(dāng)前發(fā)布事件的線程執(zhí)行
BackgroundThread這個(gè)方法,如果在非UI線程發(fā)布的事件,則直接執(zhí)行,和發(fā)布在同一個(gè)線程中。如果在UI線程發(fā)布的事件,則加入后臺(tái)任務(wù)隊(duì)列,使用線程池一個(gè)接一個(gè)調(diào)用。
Async 加入后臺(tái)任務(wù)隊(duì)列,使用線程池調(diào)用,注意沒有BackgroundThread中的一個(gè)接一個(gè)。
1、具體實(shí)現(xiàn):
一個(gè)事件的基類
public class BaseEvent {
}
2、具體事件的類型
package com.example.mydemo;
public class FavorEvent extends BaseEvent {
private int did;
private String msg = "";
public FavorEvent() {
}
public FavorEvent(int did, String msg) {
this.did = did;
this.setMsg(msg);
}
public int getDid() {
return did;
}
public void setDid(int did) {
this.did = did;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Override
public String toString() {
return "FavorEvent [did=" + did + ", msg=" + msg + "]";
}
}
3、注冊(cè)eventbus事件,其中必須在寫onEventPostThread, onEventMainThread,onEventBackgroundThread,onEventAsync其中一個(gè)方法,因?yàn)檫@是事件的回調(diào),eventbus會(huì)自動(dòng)檢測(cè)是否類中存在四種方法中的其中一種。
package com.example.mydemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import de.greenrobot.event.EventBus;
public class MainActivity extends Activity {
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
findViewById(R.id.ttt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
MainActivity2.class);
// TODO Auto-generated method stub
startActivity(intent);
}
});
}
public void onEventMainThread(FavorEvent event) {
Log.e(TAG, "onEventMainThread" + "event=" + event.toString());
((TextView) findViewById(R.id.ttt)).setText("發(fā)布啦");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
4、在MainActivity2類中通知類型為favorite類型的事件調(diào)用四種onEvent方法中的一種(我們已經(jīng)在MainActivity類中寫好了)
package com.example.mydemo;
import de.greenrobot.event.EventBus;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity2 extends Activity {
private String TAG = "MainActivity2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
// EventBus.getDefault().register(this);
findViewById(R.id.rrr).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "onEventMainThread");//通知注冊(cè)類型為FavorEvent的類調(diào)用回調(diào) d EventBus.getDefault().post(new FavorEvent(000, "nimeia"));
}
});
}
}
點(diǎn)擊MainActivity2中findViewById(R.id.rrr)的事件,log打印如下,說明調(diào)用成功
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。