RxJava Observable在按钮关闭时生成重复事件

时间:2017-11-18 15:07:41

标签: android rx-java rx-binding

我正在尝试编写一个observable,当用户按下视图时会生成重复的事件。我的下面的代码效果很好,但只是第一次(例如,如果用户再次按下按钮,则没有任何反应)。你能告诉我我做错了什么,最好的做法是什么?

foo.get()

1 个答案:

答案 0 :(得分:0)

问题是match = [l for l in cleaned_list if l['Schluesse'] == '980100'] for x in match: print(x) 可观察量不能超过1个来源。这意味着当RxView.touches内的订阅发生时,它会破坏用于触发flatMap的原始订阅,从而使其永远不再发生。

有两种可能的方法:

  1. 使用flatMap分享事件来源,而不是使用.publish(...)
  2. 将事件映射到touches开/关可观察对象,然后Boolean根据可观察对象的当前值执行相应的操作。
  3. 1

    switchMap

    2

    touches.publish { src ->
        src.filter(...)
           .flatMap {
               Observable.interval(...)
                         .takeUntil(src.filter(...))
           }
    }