项目解耦必备-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倍

猜你喜欢

转载自blog.csdn.net/u014752325/article/details/52797289