1

WebView で RxJava を使用してクリック デバウンスを実装したいと考えています。
たとえば、ユーザーがリンクをすばやくクリックすると、最初のクリックだけを扱いたいとします。まず、これでいい
と思いました。throttleFirst

  private final BehaviorSubject<String> urlLoading = BehaviorSubject.create();

  private final Observable<String> throttled =  urlLoading.throttleFirst(CLICK_THROTTLE_MILLIS, TimeUnit.MILLISECONDS);  

  //...
  throttled.subscribe(new Action1<String>() {
    @Override
    public void call(String url) {
      something(url); // :/
    }
  });
  //...

  // WebView callback
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // return something(); // original

    // i want to throttle events and return something() if it's ok or return just true for debounced events
    urlLoading.onNext(url);
    return ... ?
  }

throttleFirst正常に動作しますが、この方法では値を返すことができないことに気付きました。

質問:
のような戻り値の型を持つメソッドの場合、RxJava で値を返すにはどうすればよいshouldOverrideUrlLoadingですか?
または、そのような場合に Rx を使用するべきではありませんか? (フラグをHandler#postDelayed? で変更するなど、別の方法に進みます)

4

1 に答える 1