使用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中签入的许多用例

09-25 20:46