0
私は、ユーザがビューを押し続けている間に繰り返しイベントを生成するオブザーバブルを作成しようとしています。下のコードはうまく動作しますが、初めての場合(ユーザーがボタンをもう一度押すと、何も起こりません)。私は間違って何をしているのかアドバイスしてもらえますか?これには何がベストプラクティスですか?RxJavaボタンが押されたときに繰り返されるイベントを生成するために観測可能
val touches = RxView.touches(previousButton)
touches
.filter({ event -> event.action == MotionEvent.ACTION_DOWN })
.flatMap({
Observable.interval(500, 50, TimeUnit.MILLISECONDS)
.takeUntil(touches.filter({event -> event.action == MotionEvent.ACTION_UP}))
}).subscribe({ println("down") })
第2の方法は、私のために働いたので、私はそれを受け入れるつもりです。私は興味がありますが、なぜ私は最初のトウ作業を自動接続でも行えないのですか?以下は、動作しなかったコードです: '' 'touches.publish()。autoConnect(2).let {sharedTouches - > sharedTouches.filter({event-> event.action == MotionEvent.ACTION_DOWN}) 。 flatMap({ Observable.interval(....) .takeUntil(sharedTouches.filter({イベント - > event.action == MotionEvent.ACTION_UP})) })。購読(...)} ' '' –
2つの内部サブスクリプションの後でのみサブスクライブしますが、セカンダリサブスクリプションは最初のサブスクリプションが何かを発行した後にのみ発生します。だから、決して起こらないサブスクリプションを待つデッドロックに終わる。 – Kiskae