Skip to content

RxCallBack

Tamic (码小白) edited this page Jul 20, 2017 · 15 revisions

RxCallBack介绍

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文档

Clone this wiki locally