【发布时间】:2015-02-17 11:47:56
【问题描述】:
我想在 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 工作正常,但我注意到我不能以这种方式返回值。
问题:
当方法的返回类型为 shouldOverrideUrlLoading 时,如何使用 RxJava 返回值?
或者我不应该在这种情况下使用 Rx 吗? (换一种方式,比如用Handler#postDelayed更改标志?)
【问题讨论】:
-
RxJava 似乎不太适合这项任务。
标签: android rx-java rx-android