有关Android Eventbus的说明

有这样一个问题,从A页面跳转到B页面,b页面点击搜索框跳转到c页面,c页面选择地点调回A页面然后是刷新数据(比如textview),我在此处是用eventbus进行粘性事件传递的,这里要提醒的是,eventbus使用完要remove掉,如下:

    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public  void onReceiveMessage(ZhanDianInfoMessage msg){
        if (!TextUtils.isEmpty(msg.getEndname())){
            Log.d("lwp","my name:"+msg.getEndname());
            tvMudidi.setText(msg.getEndname());
            mEndStation = new  CoachEndItem.StationsBean();
            mEndStation.setName(msg.getEndname());
            mEndStation.setEndSrc(msg.getEndsrc());
            mEndStation.setCode(msg.getEndcode());
            ZhanDianInfoMessage previousEvent = EventBus.getDefault().removeStickyEvent(ZhanDianInfoMessage.class);
            if(previousEvent!=null){
                EventBus.getDefault().removeStickyEvent(previousEvent);
            }
        }

    }

    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public  void onReceiveMessage(QishiZhanDianMessage msg){
        if (!TextUtils.isEmpty(msg.getStartname()) || !TextUtils.isEmpty(msg.getStartcode()) || !TextUtils.isEmpty(msg.getStartsrc())){
            if (msg.getStartname().equals("aa")){
                mEndStation = null;
                tvMudidi.setText("目的地");
            }
            QishiZhanDianMessage previousEvent = EventBus.getDefault().removeStickyEvent(QishiZhanDianMessage.class);
            if(previousEvent!=null){
                EventBus.getDefault().removeStickyEvent(previousEvent);
            }
        }
    }

这里我出现的问题是,由于目的地站的数据是要出发站进行控制的,所以当我选择了目的站再选择出发站回到主页的时候目的站的信息是要清除的,也就有了mEndStation = null;的操作,然后我再去点目的地站点选择数据过来由于QishiZhanDianMessage 的消息没有remove掉,导致mEndStation 为空取不到数据,remove即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值