今天簡單的介紹 一下啊 android EventBus 的使用 android
EventBus 在官方介紹中是訂閱......什麼的 一大堆 , 在我android 菜鳥眼裏 就是用來代替android 廣播的 簡單粗暴 效率高;post
其實用法挺簡單 的 就 三步 註冊(官方叫訂閱) 接收 取消(取消訂閱). 算了 很少說直接上代碼 ;gradle
若是你用的是 android studio 直接在build.gradle 裏添加 :ui
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線程完成,這樣你就不要擔憂拋出異常啦。是否是很簡單?