RxJavaUtils 工具类
public class RxJavaUtils {
public static <T> ObservableTransformer<T, T> applySchedulers() {
return new ObservableTransformer<T, T>() {
@Override
public ObservableSource<T> apply(Observable<T> upstream) {
return upstream.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
};
}
public static ObservableTransformer<Response<ResponseBody>, Boolean> checkSuccessCode() {
return new ObservableTransformer<Response<ResponseBody>, Boolean>() {
@Override
public ObservableSource<Boolean> apply(Observable<Response<ResponseBody>> upstream) {
return upstream.map(new Function<Response<ResponseBody>, Boolean>() {
@Override
public Boolean apply(Response<ResponseBody> response) throws Exception {
return response != null && response.code() == 204;
}
});
}
};
}
public static <T> ObservableTransformer<T, T> preventDuplicateClicks(long interval) {
return new ObservableTransformer<T, T>() {
@Override
public ObservableSource<T> apply(Observable<T> upstream) {
return upstream.throttleFirst(interval, TimeUnit.MILLISECONDS);
}
};
}
//lambda简化版
// public static <T> ObservableTransformer<T, T> applySchedulers() {
// return upstream -> upstream.subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread());
// }
//
// public static ObservableTransformer<Response<ResponseBody>, Boolean> checkSuccessCode() {
// return upstream -> upstream.map((Function<Response<ResponseBody>, Boolean>)
// response -> response != null && response.code() == 204);
// }
//
// public static <T> ObservableTransformer<T, T> preventDuplicateClicks(long interval) {
// return upstream -> upstream.throttleFirst(interval, TimeUnit.MILLISECONDS);
// }
}
测试:
Disposable disposable = Observable.just(1, 2, 3)
.compose(RxJavaUtils.<Integer>applySchedulers())
.compose(RxJavaUtils.<Integer>preventDuplicateClicks(1000))
.subscribe(integer -> {
});