相关文章:
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倍