天天看點

EventBus實戰筆記

使用場景:

         在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());

繼續閱讀