今天簡單的介紹 一下啊 android EventBus 的使用 EventBus 在官方介紹中是訂閱......什麼的 一大堆 , 在我android 菜鳥眼裡 就是用來代替android 廣播的 簡單粗暴 效率高; 其實用法挺簡單 的 就 三步 註冊(官方叫訂閱) 接收 取消(取消訂閱). 算了 ...
今天簡單的介紹 一下啊 android EventBus 的使用
EventBus 在官方介紹中是訂閱......什麼的 一大堆 , 在我android 菜鳥眼裡 就是用來代替android 廣播的 簡單粗暴 效率高;
其實用法挺簡單 的 就 三步 註冊(官方叫訂閱) 接收 取消(取消訂閱). 算了 不多說直接上代碼 ;
如果你用的是 android studio 直接在build.gradle 里添加 :
compile files('libs/EventBus2.4.jar')
這個基礎的就不做 過多解釋了 網上 jar 類庫什麼的一大堆
下麵是使用:
首先是發送數據
EventBus.getDefault().post(event);//這個在項目哪裡都可以發的 event 參數等下講
接收:
EventBus.getDefault().register(this);//接收之前是要先註冊的 否則不會觸發
onEventMainThread 也就是收不到發的event 你可以寫在onCreate()等初始化方法里
public void onEventMainThread(Event event) {
//接收方法(這是低版本固定格式後面介紹高版本使用)
//event 可以是任意類型 只能一個參數 建議封裝一下擴展性強一點 下
//就把這裡當做廣播接收的地方用吧 更新ui 獲取數據.....都可以
int type = event.getType();
switch (type) {
case 1:
break;
case 2:
}
break;
case 3:
break;
}
}
//Event 封裝
public class Event {
private int type;
private Object message;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public Object getMessage() {
return message;
}
public void setMessage(Object message) {
this.message = message;
}
}
到這裡就介紹完了.....相信初學的都能看懂 另外有些時候 發現跟新ui有時候會不靈 可能是不同的項目某些寫法上造成的 原因還在查找中 ,但是放心用吧 一般情況不會有問題的
然後提一下 EventBus3.0 用法都一樣 只是接收方法不一樣了 想在
onEventMainThrea更新ui 必須在方法頭部加
@Subscribe(threadMode = ThreadMode.MainThread) //在ui線程執行
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.BackgroundThread) //在後臺線程執行
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.Async) //強制在後臺執行
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.PostThread) //預設方式, 在發送線程執行
public void onUserEvent(UserEvent event) {
}
另外 :你不必再去約定OnEvent方法開頭了該操作很簡單,定義了一個hello方法,需要傳入String參數,在其中操作UI操作,註意:我們添加了註解@Subscribe,其含義為訂閱者,在其內傳入了threadMode,我們定義為ThreadMode.MainThread,其含義為該方法在UI線程完成,這樣你就不要擔心拋出異常啦。是不是很簡單?