RxView.clicks(查看)。订阅与 view.setOnClickListener

RxView.clicks(view).subscribe vs view.setOnClickListener

使用 RxView.clicks(view).subscribe 而不是普通的 view.setOnClickListener 有什么好处?

您可以使用 RxView.

获得许多有用的用例

setOnClickListener 仅在用户单击 View 时通知。

但是 RxView 可以处理此 UI 操作并在输入时执行许多 Rx-Java 有用的方法。

例如:

如果不耐烦的用户快速且多次点击按钮,并且此点击调用了一些长时间的 运行 操作,这将是问题所在,对吗?

使用 RxView,您可以轻松地在处理这些点击之间添加一些暂停。这将非常有用:

RxView.clicks(mSearchBtn)
        .throttleFirst(2, TimeUnit.SECONDS)
        .subscribe(s -> {
            // perform some actions
        });

或者如果您执行了一些网络调用并且不想中止它:

boolean isRequestSended = true;
RxView.clicks(mSearchBtn)
        .skipWhile(new Predicate<Object>() {
                    @Override
                    public boolean test(Object o) throws Exception {
                        return isRequestSended
                    }
                })
        .subscribe(s -> {
            // isRequestSended = false
        });

还有许多其他示例。

您可以签入许多用例this post