有关Android Eventbus的说明
发布日期:2021-05-27 02:49:10 浏览次数:27 分类:技术文章

本文共 1662 字,大约阅读时间需要 5 分钟。

有这样一个问题,从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即可。

转载地址:https://blog.csdn.net/kururunga/article/details/88528636 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java后台入坑二:renrenfast后台打包和前端打包运行
下一篇:Mysql服务名无效的解决

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年09月14日 22时09分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章