EventBus粘性事件的简单使用

一 使用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 );
}





猜你喜欢

转载自blog.csdn.net/lxd13699/article/details/80613472