Api RxJava的自定义onNext()实现及其改进

Api RxJava的自定义onNext()实现及其改进,api,header,retrofit,abstraction,rx-android,Api,Header,Retrofit,Abstraction,Rx Android,我在改型的同时使用RxJava,我试图找到一种真正干净的方法来抽象API调用,这样我就可以最小化活动中的代码 到目前为止,我有这样的想法: Observable<SomeObservable> combined = Observable.zip(firstObservable, secondObservable, SomeObservable::new); // Works but needs header parsing RxRestNet

我在改型的同时使用RxJava,我试图找到一种真正干净的方法来抽象API调用,这样我就可以最小化活动中的代码

到目前为止,我有这样的想法:

Observable<SomeObservable> combined =
            Observable.zip(firstObservable, secondObservable, SomeObservable::new);

    // Works but needs header parsing
    RxRestNetworker.performAsyncApiCall(combined, (returnData) -> {
        // onNext() implementation
    }, () -> hideSuggestionProgress());
可观察组合=
zip(firstObservable,secondObservable,SomeObservable::new);
//可以工作,但需要头解析
RxRestNetworker.performAsyncApiCall(组合,(返回数据)->{
//onNext()实现
},()->隐藏建议进度());
RxRestNetworker类看起来像:

public class RxRestNetworker {
private static final String LOG_TAG = RxRestNetworker.class.getCanonicalName();

// Default error handling
private static Action1<Throwable> mOnError = throwable -> {
    Log.e(LOG_TAG, throwable.getMessage());
    throwable.printStackTrace();
};

/**
 * Perform the desired request with default error handling
 * @param observable
 * @param onAction
 * @param <T>
 * @return
 */
public static <T> Subscription performAsyncApiCall(Observable<T> observable, Action1<? super  T> onAction, Action0 onComplete) {
    // Use default error handling
    return performAsyncApiCall(observable, onAction, mOnError, onComplete);
}

/**
 * Perform the desired request with some error handling OTHER than the default one
 * @param observable
 * @param onAction
 * @param onError
 * @param <T>
 * @return
 */
public static <T> Subscription performAsyncApiCall(Observable<T> observable, Action1<? super T> onAction, Action1<Throwable> onError, Action0 onComplete) {
    return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
            .subscribe(onAction, onError, onComplete);
}
公共类RxRestNetworker{
私有静态最终字符串LOG_TAG=RxRestNetworker.class.getCanonicalName();
//默认错误处理
私有静态操作1 mOnError=throwable->{
Log.e(Log_标记,throwable.getMessage());
printStackTrace();
};
/**
*使用默认错误处理执行所需的请求
*@param可观测
*@param-onAction
*@param
*@返回
*/
公共静态订阅performAsyncApiCall(可观察,可观察,操作1
Observable<Response<SomeResponse>> getThings();