-
Notifications
You must be signed in to change notification settings - Fork 267
RxCallBack
Tamic (码小白) edited this page Jul 20, 2017
·
15 revisions
RxCallBack负责所有请求的数据流的处理后继工作,方便上层开发者进行业务调度。
主要有以下接口:
/**
* UI Thread
*
*/
public void onStart(Object tag) {}
/**
* UI Thread
*
*/
public void onCompleted(Object tag) {}
/**
* UI Thread
*/
public void onProgress(Object tag, float progress, long transfered, long total) {
}
/**
* UI Thread
*/
public void onProgress(Object tag, int progress, long speed, long transfered, long total) {
}
/**
* 子类可以复写 默认不做后端数据校验 子类指定自己的校验规则
*/
public boolean isReponseOk(Object tag, ResponseBody responseBody) {
return true;
}
/**
* Thread Pool Thread
*
* @param response
*/
public abstract T onHandleResponse(ResponseBody response) throws Exception;
@Override
public <T> T transform(E response, Class<T> classOfT) throws Exception {
return (T) response;
}
/**
* Thread Pool Thread
*/
public abstract void onError(Object tag, Throwable e);
public abstract void onCancel(Object tag, Throwable e);
/**
* Thread Pool Thread
*/
public abstract void onNext(Object tag, Call call, T response);
/**
* Release
*/
public void onRelease() {}
修改
如果想修改返回的数据走成功回调流程的逻辑,novate实际上也提供了动态化的方案, 上层的callback可以实现需要的rxcallback进行实现以下方式:
/**
* 子类可以复写 默认不做对后端的数据校验,子类指定自己的校验规则。
*/
public boolean isReponseOk(Object tag, ResponseBody responseBody) {
//对原始数据处理 是否视为成功
......
return 你的判断;
}
业务实现
业务调用主要选择性的实现 onStart(), onProgress(), onNext(), onError(), onCompleted(), onCancel()
回调函数;
- onStart() 请求开始调用
- onNext() 处理请求成功回调
- onCompleted() 请求结束回调
- onProgress() 请求进度
- onCancel() 请求取消时回调
- onError() 请求失败回调
- onRelease() 释放数据回调
- RxStringCallback 返回字符串
- RxResultCallback 返回javabean
- RxListCallback 返回集合javabean
- RxGenericsCallback 返回泛型
- RxFileCallBack 返回文件
- RxDownCallback 下载回调,可以进行一些下载高级操作
- RxBitmapCallback 返回BitMap
举个列子
当上传文件时候,想要把后端返回的数据解析成了Strng,就可以选择StringCallback。
RxStringCallback举列:
novate.rxUploadWithBody(url, new File(mPath), new RxStringCallback() {
@Override
public void onProgress(Object tag, float progress, long downloaded, long total) {
super.onProgress(tag, progress, downloaded, total);
}
@Override
public void onStart(Object tag) {
super.onStart(tag);
}
@Override
public void onNext(Object tag, String response) {
}
@Override
public void onError(Object tag, Throwable e) {
}
@Override
public void onCancel(Object tag, Throwable e) {
}
@Override
public void onCompleted(Object tag) {
}
});
}
请参考:api文档