1.概述
在EventBus3.0中 和 2.0 有这不小的变化。
先看看如何在项目中使用EvetBus3.0吧。
一般的基本使用大都这样子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
true, threadMode = ThreadMode.MAIN) //在ui线程执行 (sticky =
public void onMainEvent(UserDetail userInfo) {
}
//异步执行 (threadMode = ThreadMode.ASYNC)
public void onAsynclEvent(UserDetail userInfo) {
}
//直接执行 ( threadMode = ThreadMode.POSTING)
public void onPostingEvent(UserDetail userInfo) {
}
//后台执行 (threadMode = ThreadMode.BACKGROUND)
public void onBackgroundEvent(UserDetail userInfo) {
}
在3.0版本的EventBus上,不再限制函数名字,只需在你想要接收函数上方加上注解@Subscribe
即可,再根据需求添加相应的threadMode
(里面的标志将决定该方法运行在哪个线程),如果希望可以延迟接收,则可以加上sticky = true
的标志。
再说注册后,如何发送event。1
2
3EventBus.getDefault().postSticky(mUserDetail);
//或者
EventBus.getDefault().post(mUserDetail);
发出去之后,数据就可以在接收函数里处理了。