一 使用eventbus粘性事件的操作步骤
/**
* 创建Module,关联EventBus框架,创建第2个Activity
完成Module的布局及控件的初始化
创建EventBus消息类,设置属性
使用EventBus的postSticky方法发送黏性事件
根据消息类,接收黏性事件(注意:注解要添加sticky = true)
注册EventBus,解除EventBus黏性事件及注册
*/
二具体的实现注意点
1.
/*
* 粘性事件就不是post这个方法了,EventBus.getDefault ().post ();
* 而是,粘性事件的使用的则是EventBus.getDefault ().postSticky ();
* */
//EventBus只是做传值,而不能起到四大组件的功能
EventBus.
getDefault
().postSticky (
new
EMessage (
msg
));
Intent intent=
new
Intent (
this
,MessageActivity.
class
);
startActivity (intent);
2.粘性事件就像一个开关一样,如果点击了接收,那末数据才会显示出来,不点击就不会显示数据
那末只能在点击事件里进行注册,这样才能达到只有点击后才能显示数据的这个效果
(再点击事件里也要进行相应的判断)
case
R.id.
jieshou
:
//判断如果已经注册过了,那就不注册了,如果不做判断那么就会报一个已经注册过的错误,程序也会崩溃
if
(!EventBus.
getDefault
().isRegistered (
this
)){
EventBus.
getDefault
().register (
this
);
}
break
;
3.
接收数据的时候也和普通的eventbus不一样(会多一个参数
sticky = true
)
//接收值 粘性事件必须要加的参数sticky = true
@Subscribe
(threadMode = ThreadMode.
MAIN
,sticky =
true
)
public void
request(EMessage eMessage){
text0
.setText (eMessage.
message
);
}
4.
取消绑定注册以及移除所有的粘性事件
@Override
protected void
onDestroy() {
super
.onDestroy ();
//移除所有的粘性事件
EventBus.
getDefault
().removeAllStickyEvents ();
//取消注册
EventBus.
getDefault
().unregister (
this
);
}