记录EventBus在微信支付回调页面中出现的问题

最近在公司的项目中集成微信支付,在WXPayEntryActivity的onResp的回调中使用了EventBus的粘性事件通知支付页面,从支付页面拿到某个值之后再进入等待页面,测试的时候只测了一次,支付成功没有问题,跳转也没有问题。然而,在第二次支付的时候,发现未经过支付页面,直接进入了等待页面,当然,要传递的值没带过来,但是WXPayEntryActivity的onResp的回调中返回的code是0,也就是支付成功了,这就很奇怪了,试了很多次都是这样。后来把进程杀掉,重新进来又可以支付了,想了好久,后来怀疑是不是EventBus的问题,于是就去查了一下粘性事件和普通事件的区别。

sticky事件一般用在我们不确认订阅关系是否存在,但是想提前发送广播的时候。针对sticky事件  eventBus会缓存在事件发射队列,若是订阅关系已经存在则发射出去,但不会销毁。下次再次订阅,会继续接收上一次事件。问题就出在这里,再次支付时,接收了上次的粘性事件,直接默认支付成功,跳到等待页面。

解决办法:

EventBus.getDefault().removeStickyEvent(event);或者使用非sticky事件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值