LiveEventBus icon indicating copy to clipboard operation
LiveEventBus copied to clipboard

如何控制粘性事件只触发一次,而不是每次都触发。

Open LeoJwj opened this issue 5 years ago • 4 comments

开发者你好: 场景:
我现在有一个场景是在A页面跳转B页面前会有条件的是否发送一个消息。我在B页面注册了一个粘性事件

问题: 现在的问题是,只要在A页面之前发送过消息,就算没有触发条件,在B页面一定会收到之前A页面发送的消息。

预计效果: 保证在B中注册的粘性消息只触发一次。不知道有没有能够取消特定消息的方法。

LeoJwj avatar Jul 10 '19 03:07 LeoJwj

你可以试一下把autoClear设置为true,这样只要没有其他的观察者,A页面跳转B的时候observer的是一个新的observable,应该能实现你要的效果

JeremyLiao avatar Jul 10 '19 11:07 JeremyLiao

你可以试一下把autoClear设置为true,这样只要没有其他的观察者,A页面跳转B的时候observer的是一个新的observable,应该能实现你要的效果

最好是能有一个手动removeKey的方法

LeoJwj avatar Jul 11 '19 07:07 LeoJwj

你可以试一下把autoClear设置为true,这样只要没有其他的观察者,A页面跳转B的时候observer的是一个新的observable,应该能实现你要的效果

最好是能有一个手动removeKey的方法

主要是容易被滥用,如果某个observable还有observer,这个时候removeKey了,这个时候postevent收不到,用户会认为有问题

JeremyLiao avatar Jul 11 '19 08:07 JeremyLiao

或许你在B页面收到第一次之后直接remove(this)

michaellee123 avatar Apr 25 '20 03:04 michaellee123