Api RxJava的自定义onNext()实现及其改进
我在改型的同时使用RxJava,我试图找到一种真正干净的方法来抽象API调用,这样我就可以最小化活动中的代码 到目前为止,我有这样的想法: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
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();