EventBus3.0在页面间跳转接收不到消息解决方法

      在最近的项目中使用EventBus代替广播,intent传递消息等,大大减少了代码量,提升编码速度,同时整体的代码优雅型也提高了。

使用过程中遇到一些小问题,就是在当前activity使用EventBus.getInstance().post(new Test("eventbus发送消息成功!"));然后在onCreate中EventBus.getIntsance().register(this);

@Subscribs(threadMode = ThreadMode.MAIN)

public void onMain(Test test){Log.i("test",test);} test在打印台打印出来的信息是"eventbus发送消息成功!" 。

如果在另外一个activity,SecondActivity跳转的时候使用EventBus就会接受不到报错No subscribers registered for event class com.zhongxunkeji.app.carillegalrecord.busevent.LoginSuccessEvent,后台花了几个小时终于找到问题的原因,就是跳转到SecondActivity的时候在EventBus注册之前,消息已经发送了,因此才会出现上面的错误。

解决方案:使用粘性发送消息的方式,EventBus.getInstance().postSticky(new Test("发送成功"));当然在接收的时候指定方式sticky = true;如@Subscribs(Sticky =true),就可以解决上面的问题。粘性发送消息的意思是如果没有接收到消息还会继续发送最新发送过的消息。好了简单的记录一下,因为在网上找了没有对于类似的问题解决方案。。还是希望能够帮助一些遇到这个问题的朋友。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:EventBus出来已经有一段时间了,github上面也有很多开源项目中使用了EventBus。所以抽空学习...
    Kerry202阅读 1,357评论 1 2
  • 项目到了一定阶段会出现一种甜蜜的负担:业务的不断发展与人员的流动性越来越大,代码维护与测试回归流程越来越繁琐。这个...
    fdacc6a1e764阅读 3,313评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,350评论 19 139
  • 文章基于EventBus 3.0讲解。首先对于EventBus的使用上,大多数人还是比较熟悉的。如果你还每次烦于使...
    Hohohong阅读 2,415评论 0 6
  • Java 8 - Lambda表达式 1 Java 8-概述2 Java 8 - Lambda表达式3 Java ...
    全能程序猿阅读 269评论 0 1

友情链接更多精彩内容