使用場景:
在B界面裡面做了某些操作更新A界面的頁面,在背景服務裡面擷取到了資料更新前台頁面。
1.添加依賴
compile 'org.greenrobot:eventbus:3.0.0'
2.在OnCreate中注冊EventBus
Eventbus.getDefault.register(this);
3.在onDestory中取消注冊
EventBus.getDefault().unregister(this);
4.處理訂閱資訊
定義一個方法,加上
@Subscribe(threadMode = ThreadMode.MAIN)标記
threadMode 有四個值,分别代表着不一樣的含義:
ThreadMode.MAIN代表在主線程中處理
ThreadMode.POSTING 預設調用方式,在調用post方法的線程執行,避免了線程切換,性能開銷最少
ThreadMode.ASYNC開辟新獨立線程,用來執行耗時操作,例如網絡通路
ThreadMode.BACKGROUND如果調用post方法的線程不是主線程,則直接在該線程執行,如果是主線程,則切換到背景單例線程,多個方法公用同個背景線程,按順序執行,避免耗時操作
package org.greenrobot.eventbus;
public enum ThreadMode {
POSTING,
MAIN,
BACKGROUND,
ASYNC
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Bean bean){
//接收到廣播後處理資料,如重新整理界面等操作
}
5.發送資訊(在需要更新資料的地方發送廣播)
EventBus.getDefault().post(new Bean());