相關文章:
《項目解耦必備-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倍