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
使用 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