天天看點

項目解耦必備-EventBus3.0的簡單講解

相關文章:

《項目解耦必備-EventBus的詳細講解(一)》

EventBus3.0出來很長時間了,但是我還是想寫一下,當作自己的筆錄

Gradle引入:compile 'de.greenrobot:eventbus:3.0.0-beta1'

EventBus2.0使用是這樣的:

public void onEvent(MessageEvent event) {
    log(event.message);
}
public void onEventMainThread(MessageEvent event) { 
textField.setText(event.message); 
}

public void onEventBackgroundThread(MessageEvent event){ 
saveToDisk(event.message); 
}
           

而到了EventBus3.0之後改成了像這樣

@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) {
}
           

其他的地方都不變,唯一的變化就是把訂閱函數不再固定死了。

按照EventBus創作者在3.0中說,如果進一步提升app的性能,你需要添加:

provided 'de.greenrobot:eventbus-annotation-processor:3.0.0-beta1'
           

其在編譯的時候為注冊類建構了一個索引,而不是在運作時,這樣的結果是其讓EventBus的性能提升了一倍,相對2.4來說,其會是他的3到6倍