一、进阶封装
①网络框架的使用
mService.getAppVersion() //通过service 调用方法 .subscribeOn(Schedulers.io()) //指定请求执行的环境 .observeOn(AndroidSchedulers.mainThread())//指定结果请求的环境 .map(new ResultFilter<>()) // 对结果进行过滤 .subscribe(new BaseNetSubscriber<>(mActivity, AppVersionBean-> { //TODO 处理请求的结果 此处 采用 java 8 特性 箭头函数 }));
②结果的过滤
public class ResultFilter<T> implements Func1<Result<T>, T> { //Result 就是接口返回数据的模型 @Override public T call(Result<T> response) { if (IFlagCode.successCode == response.getFlag()) {//成功的处理 return response.getData(); } else {//异常的处理 throw new CommException(response.getFlag(),response.getMsg()); } } }③Result的创建 接口返回的数据模型
public class Result<T>{ private int flag; private String msg; private T data; public int getFlag() { return flag; } public void setFlag(int flag) { this.flag = flah; } public String getMsg() { return msg; } public void setRetMsg(String msg) { this.msg= msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } }④CommException 异常的处理
public class CommException extends RuntimeException { public CommException(int flag, String msg) { super(CommprocessCode(flag, msg)); } private static String CommprocessCode(int flag, String msg) { ToastUtils.showMsg(retMsg); return msg; } }⑤IFlagCode 判断接口成功的枚举
public interface IFlagCode { int successCode = 1; //根据后台返回的结果 设置 }
⑥BaseNetSubscriber 网络的拦截处理
public class BaseNetSubscriber<T> extends Subscriber<T> { private Activity mActivity; private SuccessCallback<T> mCallback; public BaseNetSubscriber(Activity activity, SuccessCallback<T> mCallback) { this.mActivity = activity; this.mCallback = mCallback; } @Override public void onStart() { //网络请求开始 if (!NetWorkUtils.isConnected(BaseApp.application)) {//网络是否连接 ToastUtils.show("网络未连接"); return; } //其他处理 } @Override public void onCompleted() { //网络请求结束 } @Override public void onNext(T t) { //网络请求成功 mCallback.callback(t); } @Override public void onError(Throwable e) {//网络请求错误 try { if (!(e instanceof CommException)) { ToastUtils.show("网络异常"); e.printStackTrace(); } //其他处理 } catch (Throwable throwable) { throwable.printStackTrace(); } } //成功的回调 public interface SuccessCallback<T> { void callback(T t); } }
到此结束,网络框架封装简单明了,很适合初学者.