Eventbus3.0的簡單使用

簡介

我們使用一個框架或者控件,首先需要知道他的作用,有什麼優勢。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就能接受到發送者發送的消息。

這只是一個基礎的使用,預知進階使用,請聽下回分解,明晚八點不見不散!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章