好文推荐:RxHttp-完美适配Android-10-11-上传-下载-进度监听

val result = RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addPart(context, “file”, uri)
.awaitString() //awaitXxx系列方法是挂断方法

//RxJava
RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addPart(context, “file”, uri)
.asString()
.subscribe({
//成功回调
}, {
//异常回调
})
复制代码

同样的,RxHttp内部提供了一系列addPart方法供大家选择,列出几个常用的,如下:

//添加单个Uri对象
addPart(Context, String, Uri)
//添加多个Uri对象,每个Uri对应相同的key
addParts(Context,String, List<? extends Uri> uris)
//添加多个Uri对象,每个Uri对应不同的key
addParts(Context context, Map<String, ? extends Uri> uriMap)
//等等其它addPart方法
复制代码

3.2、带进度上传

老规矩,看看Android 10之前是如何监听上传进度的,如下:

//kotlin 协程
val result = RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addFile(“file”, new File(“xxx/1.jpg”))
.upload(this) {//this为当前协程CoroutineScope对象,用于控制回调线程
//上传进度回调,0-100,仅在进度有更新时才会回调
val currentProgress = it.getProgress() //当前进度 0-100
val currentSize = it.getCurrentSize() //当前已上传的字节大小
val totalSize = it.getTotalSize() //要上传的总字节大小
}
.awaitString() //awaitXxx系列方法是挂断方法

//RxJava
RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addFile(“file”, new File(“xxx/1.jpg”))
.upload(AndroidSchedulers.mainThread()) {
//上传进度回调,0-100,仅在进度有更新时才会回调
int currentProgress = it.getProgress() //当前进度 0-100
long currentSize = it.getCurrentSize() //当前已上传的字节大小
long totalSize = it.getTotalSize() //要上传的总字节大小
}
.asString()
.subscribe({
//成功回调
}, {
//异常回调
})
复制代码

相比于单纯的上传文件,我们仅需额外调用upload操作符,传入线程调度器及进度回调即可。

同样的,对于Andorid 10,我们仅需要将File对象换成Uri对象即可,如下:

val context = getContext(); //获取上下文对象
//获取Uri对象,这里为了方便,随便写了一个Downlaod目录下的Uri地址
val uri = Uri.parse(“content://media/external/downloads/13417”)

//kotlin 协程
val result = RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addPart(context, “file”, uri)
.upload(this) {//this为当前协程CoroutineScope对象,用于控制回调线程
//上传进度回调,0-100,仅在进度有更新时才会回调
val currentProgress = it.getProgress() //当前进度 0-100
val currentSize = it.getCurrentSize() //当前已上传的字节大小
val totalSize = it.getTotalSize() //要上传的总字节大小
}
.awaitString() //awaitXxx系列方法是挂断方法

//RxJava
RxHttp.postForm(“/service/…”)
.add(“key”, “value”)
.addPart(context, “file”, uri)
.upload(AndroidSchedulers.mainThread()) {
//上传进度回调,0-100,仅在进度有更新时才会回调
int currentProgress = it.getProgress() //当前进度 0-100
long currentSize = it.getCurrentSize() //当前已上传的字节大小
long totalSize = it.getTotalSize() //要上传的总字节大小
}
.asString()
.subscribe({
//成功回调
}, {
//异常回调
})
复制代码

怎么样?是不是so easy!!

4、下载

下载较于上传,要丰富很多,RxHttp内部提供类一系列下载方法来满足不同的需求,如下:</

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值