EventBus 简单使用
2017-03-09 本文已影响25人
冉冉升起的小太阳
简单记录下EventBus的使用:
//依赖
compile 'de.greenrobot:eventbus:+'
setup1 接收页面
//在Activity中 或者是 Fragment 中 注册 EventBus
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
setup2 接收页面
//注册就会有反注册
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
setup3
//为了测试新建一个实体类简单点
public class MessageEven {
public String str;
public MessageEven(String str) {
this.str = str;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
setup4 接收页面
@Subscribe()
public void onMainEvenBus(MessageEven even) {
tv_desc.setText(even.getStr());
}
注意
在3.0之前,EventBus还没有使用注解方式。消息处理的方法也只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,分别代表四种线程模型。而在3.0之后,消息处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为PostThread),四种线程模型,下面会讲到。
注意,事件处理函数的访问权限必须为public,否则会报异常。
setup5 发送页面
MessageEven messageEven = new MessageEven(“发送消息了~”);
EventBus.getDefault().post(messageEven);