package ren.solid.library.http.subscriber; import java.util.concurrent.CancellationException; import io.reactivex.SingleObserver; import io.reactivex.annotations.NonNull; import io.reactivex.disposables.Disposable; import ren.solid.library.http.HttpResult; /** * Created by _SOLID * Date:2016/7/27 * Time:21:27 */ public abstract class HttpResultSubscriber<T> implements SingleObserver<HttpResult<T>> { @Override public void onSubscribe(@NonNull Disposable d) { } @Override public void onSuccess(@NonNull HttpResult<T> result) { if (!result.error) _onSuccess(result.results); else _onError(new Throwable("error=true")); } @Override public void onError(Throwable e) { if (e != null) { //处理RxLife取消订阅的问题,这实际上并不是一个真正的错误 //问题链接:https://github.com/trello/RxLifecycle/tree/2.x#unsubscription if (!(e instanceof CancellationException)) { e.printStackTrace(); if (e.getMessage() == null) { _onError(new Throwable(e.toString())); } else { _onError(new Throwable(e.getMessage())); } } } else { _onError(new Exception("null message")); } } public abstract void _onSuccess(T t); public abstract void _onError(Throwable e); }