Android Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 四 文件下载(图片下载为例)

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 一 框架配置

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 二 请求数据

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 三 文件上传(支持多文件上传)

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 四 下载文件

1.添加下载地址接口

2.添加请求方法实例

3.初始化 调用

	@GET
    @Streaming
    fun downloadImg(@Url imgUrl: String): Observable<ResponseBody>
  /**
     * 指定线程下载文件(异步),非阻塞式下载
     *
     * @param url       图片url
     *
     */
    private fun downloadFile(
        url: String
    ) {
        RetrofitHelper.getApi()
            .downloadImg(url)
            .subscribeOn(Schedulers.io())
            .observeOn(Schedulers.newThread())
            .subscribe(object : DisposableObserver<ResponseBody?>() {
                override fun onNext(responseBody: ResponseBody) {
                    var bitmap: Bitmap? = null
                    val bys: ByteArray
                    try {
                        bys = responseBody.bytes()
                        bitmap = BitmapFactory.decodeByteArray(bys, 0, bys.size)
                        if (bitmap == null) {
                            return
                        }
                        try {
                            Utils.saveImg(bitmap, "本地路径",   "文件名称"  )

                        } catch (e: IOException) {
                            e.printStackTrace()
                        }
                    } catch (e: IOException) {
                        e.printStackTrace()
                    }
                    bitmap?.recycle()
                }

                override fun onError(e: Throwable) {
					//下载异常
                }

                override fun onComplete() {
                 //下载完成
                }
            })
    }

持续更新中

猜你喜欢

转载自blog.csdn.net/qq_28643195/article/details/107543698