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