我有一个布尔可观察的(通过观察者)启动和停止Android服务.当传递true时,服务必须立即启动.当错误通过时,我想在不久之后出现错误的情况下去辩论,以避免不必要的(和破坏性的)停止和启动服务.是否有标准运算符的组合可以执行此操作,或者我必须自己编写,如果是,我应该基于它OperatorDebounceWithTime.java还是有更简单的方法?谢谢!
看起来你想要debounce版本(Func1),它允许你为每个发射的项目定义一个自定义去抖动窗口.它需要一个函数,为源Observable发出的每个项返回一个Observable.如果源Observable在此新生成的Observable终止之前发出另一个项目,则debounce将禁止该项目.
例如,以下代码将true立即发出值,并在发出值false之前保持值2秒.如果源true在计时器到期之前发出另一个值,false则将被抑制.
deviceTrigger
.distinctUntilChanged()
.debounce(startDevice -> startDevice
? Observable.empty()
: Observable.timer(2, TimeUnit.SECONDS))
.distinctUntilChanged();
Run Code Online (Sandbox Code Playgroud)
请注意,distinctUntilChanged()可能不需要调用,具体取决于源Observable是否已经是不同的,并且您的使用者是否true连续处理多个值.
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |