Skip to content

RxJava、Await、Flow 对应的 asXxx、toXxx、toFlowXxx方法介绍

liujingxing edited this page Sep 24, 2022 · 11 revisions

v3.0.0及以上版本(计划中...)

方法说明 Await Flow RxJava
(Java)
RxJava
(kotlin)

获取自定义解析器返回值

toAwait(Parser)

toFlow(Parser)

toObservable(Parser)

toObservable(Parser)

获取String

toAwaitString()

toFlowString()

toObservableString()

toObservableString()

获取任意Bean类

toAwait<Bean>()

toFlow<Bean>()

toObservable(Bean.class)

toObservable<Bean>()

获取List<Bean>

toAwaitList<Bean>()

toFlowList<Bean>()

toObservableList(Bean.class)

toObservableList<Bean>()

获取Bitmap

toAwait<Bitmap>()

toFlow<Bitmap>()

toObservable(Bitmap.class)

toObservable<Bitmap>()

同时获取Bean类、okhttp3.Headers、okhttp3.Response

RxHttp.get("/server/...")
  .toAwait<OkResponse<User>>()
  .awaitResult {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }
RxHttp.get("/server/...")
  .toFlow<OkResponse<User>>()
  .collect {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }
Type type = ParameterizedTypeImpl
  .get(OkResponse.class, User.class);

RxHttp.get("/server/...")
  .<OkResponse<User>>toObservable(type)
  .subscribe(res -> {
    User user = res.body()
    Response response = res.raw()
    Headers headers = res.headers()
  });
RxHttp.get("/server/...")
  .toObservable<OkResponse<User>>()
  .subscribe {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }

下载/断点下载/带进度下载

//普通下载
RxHttp.get("/server/...")
  .toAwait("本地绝对路径") {
    //下载进度回调
  }
  ...

//断点下载
RxHttp.get("/server/...")
  .toAwait("本地绝对路径", true) {
    //下载进度回调
  }
  ...
//普通下载
RxHttp.get("/server/...")
  .toFlow("本地绝对路径") {
    //下载进度回调
  }
  ...

//断点下载
RxHttp.get("/server/...")
  .toFlow("本地绝对路径", true) {
    //下载进度回调
  }
  ...
//普通下载
RxHttp.get("/server/...")
  .toObservable("本地绝对路径")
  .onMainProgress(p -> {
    //下载进度回调
  })
  ...

//断点下载
RxHttp.get("/server/...")
  .toObservable("本地绝对路径", true)
  .onMainProgress(p -> {
    //下载进度回调
  })
  ...
//普通下载
RxHttp.get("/server/...")
  .toObservable("本地绝对路径")
  .onMainProgress {
    //下载进度回调
  }
  ...

//断点下载
RxHttp.get("/server/...")
  .toObservable("本地绝对路径", true)
  .onMainProgress {
    //下载进度回调
  }
  ...

Android 10下载/断点下载/带进度下载

//断点下载,普通下载第3个参数不传即可
toAwait(Context, Uri, true) { 
  //进度回调 
}
//断点下载,普通下载第3个参数不传即可
toFlow(Context, Uri, true) { 
  //进度回调 
}  
//断点下载,普通下载第3个参数不传即可
toObservable(Context, Uri, true) 
//进度回调同上onMainProgress方法
//断点下载,普通下载第3个参数不传即可
toObservable(Context, Uri, true) 
//进度回调同上onMainProgress方法

上传进度监听

无,请使用Flow替代

RxHttp.postXxx("")
  .toFlow<T> {
    //进度回调 
  }
  ...
RxHttp.postXxx("")
  .toObservableXxx(T.class)
  .onMainProgress(p -> { 
    //进度回调 
  })      
  ...
RxHttp.postXxx("")
  .toObservableXxx<T>()
  .onMainProgress {
    //进度回调 
  }
  ...

v3.0.0以下版本

方法说明 Await Flow RxJava
(Java)
RxJava
(kotlin)

获取String

toStr()

toFlowString()

asString()

asString()

获取任意Bean类

toClass<Bean>()

toFlow<Bean>()

asClass(Bean.class)

asClass<Bean>()

获取List<Bean>

toList<Bean>()

toFlow<List<Bean>>()

asList(Bean.class)

asList<Bean>()

获取Bitmap

toBitmap()

toFlowBitmap()

asBitmap()

asBitmap()

获取响应头Headers

toHeaders()

toFlowHeaders()

asHeaders()

asHeaders()

获取okhttp3.Response

toOkResponse()

toFlowOkResponse()

asOkResponse()

asOkResponse()

获取自定义解析器返回值

toParser(Parser)

toParser(Parser).asFlow()

asParser(Parser)

asParser(Parser)

下载

toDownload(String)

toFlow(String)

asDownload(String)

asDownload(String)

断点下载

toDownload(String, Boolean)

toFlow(String, Boolean)

asAppendDownload(String)

asAppendDownload(String)

Android 10下载

toDownload(Context, Uri)

toFlow(Context, Uri)

asDownload(Context, Uri)

asDownload(Context, Uri)

Android 10断点下载

toDownload(Context, Uri, Boolean)

toFlow(Context, Uri, Boolean)

asAppendDownload(Context, Uri)

asAppendDownload(Context, Uri)

下载进度监听

以上下载方法均有重载的方法,支持最后一个参数传入进度回调接口

上传进度监听

//不推荐,推荐Flow性能更优
RxHttp.postXxx("")
    .upload(CoroutineScope) {
        //进度回调 
    }
    .toXxx()
    ...
RxHttp.postXxx("")
    .toFlow<T> {
        //进度回调 
    }
    ...
RxHttp.postXxx("")
    .upload(progress -> { 
        //进度回调 
    })      
    .asXxx()
    ...
RxHttp.postXxx("")
    .upload {
        //进度回调 
    }
    .asXxx()
    ...