Skip to content

RxJava、Await、Flow 对应的 toObservableXxx、toAwaitXxx、toFlowXxx方法介绍

liujingxing edited this page Jun 28, 2024 · 1 revision

v3.1.0及以上版本

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

获取自定义解析器返回值

toAwait(Parser)

toFlow(Parser)

toObservable(Parser)

toObservable(Parser)

自定义解析器

toAwaitXxx<T>()

toFlowXxx<T>()

toObservableXxx(Class<T>)

toObservableXxx<T>()

获取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<User>()
  .toAwaitOkResponse()
  .awaitResult {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }
RxHttp.get("/server/...")
  .toFlow<User>()
  .toFlowOkResponse()
  .collect {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }
RxHttp.get("/server/...")
  .toObservable(User.class)
  .toObservableOkResponse()
  .subscribe(res -> {
    User user = res.body()
    Response response = res.raw()
    Headers headers = res.headers()
  });
RxHttp.get("/server/...")
  .toObservable<User>()
  .toObservableOkResponse()
  .subscribe {
    val user = it.body()
    val response = it.raw()
    val headers = it.headers()
  }

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

//普通下载
RxHttp.get("/server/...")
  .toDownloadAwait("本地绝对路径")
  ...

//断点下载
RxHttp.get("/server/...")
  .toDownloadAwait("本地绝对路径", true)
  ...

//如需监听进度,请使用Flow实现
//普通下载
RxHttp.get("/server/...")
  .toDownloadFlow("本地绝对路径")
  .onProgress {
    //下载进度回调
  }
  ...

//断点下载
RxHttp.get("/server/...")
  .toDownloadFlow("本地绝对路径", true)
  .onProgress {
    //下载进度回调
  }
  ...
//普通下载
RxHttp.get("/server/...")
  .toDownloadObservable("本地绝对路径")
  .onMainProgress(p -> {
    //下载进度回调,亦可调用onProgress方法
  })
  ...

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

//断点下载
RxHttp.get("/server/...")
  .toDownloadObservable("本地绝对路径", true)
  .onMainProgress {
    //下载进度回调,亦可调用onProgress方法
  }
  ...

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

//断点下载,普通下载第3个参数不传即可
toDownloadAwait(Context, Uri, true)

//如需监听下载进度,请使用Flow实现
//断点下载,普通下载第3个参数不传即可
toDownloadFlow(Context, Uri, true)
  .onProgress { 
     //进度回调 
  }  
//断点下载,普通下载第3个参数不传即可
toDownloadObservable(Context, Uri, true) 
  .onMainProgress(p -> {
    //下载进度回调,亦可调用onProgress方法
  })
//断点下载,普通下载第3个参数不传即可
toDownloadObservable(Context, Uri, true) 
  .onMainProgress {
    //下载进度回调,亦可调用onProgress方法
  }

上传进度监听

无,请使用Flow替代

RxHttp.postXxx("")
  .toFlow<T>()
  .onProgress {
    //上传进度回调 
  }
  ...
RxHttp.postXxx("")
  .toObservableXxx(T.class)
  .onMainProgress(p -> { 
    //下载进度回调,亦可调用onProgress方法
  })      
  ...
RxHttp.postXxx("")
  .toObservableXxx<T>()
  .onMainProgress {
    //下载进度回调,亦可调用onProgress方法
  }
  ...

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()
    ...