簡介
我們使用一個框架或者控件,首先需要知道他的作用,有什麼優勢。Eventbus3.0這說白了就是一個事件發佈和訂閱的框架。直白點說就是一邊發送消息,或數據,另外一邊接收消息或數據。它發送消息和接收消息的代碼十分的簡潔,用起來十分的簡單。
先說下使用的代碼吧
這裏看不懂不要着急在下面有詳解哦!
導入框架
在安卓studio的build文件下加入
compile’org.greenrobot:eventbus:3.0.0’
一、註冊
//註冊
EventBus.getDefault().register(this);
二、取消註冊
@Override
protected void onDestroy() {
super.onDestroy();
//取消註冊
EventBus.getDefault().unregister(this);
}
三、發佈
//直接發佈,接收對象
EventBus.getDefault().post("發佈");
//滯留髮布
EventBus.getDefault().postSticky("滯留髮布");
四、訂閱處理數據
/*
*UserEvent需要自己定義
*/
//在ui線程執行
@Subscribe(threadMode = ThreadMode.MainThread)
public void onUserEvent(UserEvent event) {
}
//在後臺線程執行
@Subscribe(threadMode = ThreadMode.BackgroundThread)
public void onUserEvent(UserEvent event) {
string a= event.getText();//這就是接收的數據
}
//強制在後臺執行
@Subscribe(threadMode = ThreadMode.Async)
public void onUserEvent(UserEvent event) {
string a= event.getText();
}
//默認方式, 在發送線程執行
@Subscribe(threadMode = ThreadMode.PostThread)
public void onUserEvent(UserEvent event) {
string a= event.getText();
}
總結下
eventbus的使用就差不多是這個樣子了,這些代碼直接複製粘貼進去就好了,但是我剛接觸的時候感覺怪怪的,就是在訂閱處理數據的時候我一直有個疑問,這個方法不是沒有調用嗎?他是怎麼回事啊?原來訂閱的方法不需要調用,這這個類裏面註冊瞭然後收到了數據就直接會走到訂閱的方法裏面:@Subscribe(threadMode = ThreadMode.MainThread) 這個就是接受的標識。然後UserEvent 是什麼東西呢?相信大家沒有看懂,這個是自己定義的一個類
/**
* 實體類
*/
public class UserEvent {
/**
* 這裏你傳遞什麼類型你就寫什麼類型
*/
//文本
private String text;
public UserEvent (String text) {
this.text=text;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
在發佈的時候
EventBus.getDefault().post(new UserEvent("我是消息"));
當訂閱者的類中訂閱了,也就是register就能接受到發送者發送的消息。