使用Retrofit 2的内存不足下载文件

MegaX

我有一个pdf查看器应用程序,在这里我必须下载大的pdf文件(例如136mb),我正在使用Retrofit2-beta2进行此过程。问题是我总是内存不足。我怎样才能告诉翻新我将下载一个大文件,请仅将byteStream给我?

我的界面是:

@GET("url")
Call<ResponseBody> getData(params);

我有一个ProgressResponseBody类,它正在扩展ResponseBody,并且在这里设置一个progressListener,以便能够刷新我的进度栏,

onResponse函数中,我只是得到InputStream

InputStream input = response.body().byteStream();
FileOutputStream out = new FileOutputStream(file);
int bufferSize=1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while (len = input.read(buffer) != -1) {
    out.write(buffer,0,len);
} 
if(out!=null)
    out.close();

更新

我已经将@Stream添加到接口中,但是现在我在ProgressResponseBody.java中得到了NetworkOnMainThreadException。错误在super.read(sink,byteCount)中引发;排。我怎样才能把它放在一个单独的线程上?

@Override
    public BufferedSource source() throws IOException {
        if (bufferedSource == null) {
            bufferedSource = Okio.buffer(source(responseBody.source()));
        }
        return bufferedSource;
    }

    private Source source(Source source) {
        return new ForwardingSource(source) {
            long totalBytesRead = 0L;

            @Override
            public long read(Buffer sink, long byteCount) throws IOException {
                long bytesRead = super.read(sink, byteCount);
                totalBytesRead += bytesRead != -1 ? bytesRead : 0;
                progressListener.update(totalBytesRead, responseBody.contentLength(), bytesRead == -1);
                return bytesRead;
            }
        };
    }
艾格林

@Streaming注释添加到您的调用中以获取原始内容ResponseBody

@Streaming
@GET("url")
Call<ResponseBody> getData(params);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Java SDK API从Google云端硬盘下载文件时出现内存不足错误

来自分类Dev

使用AFNetworking NSOperations连续下载许多文件.....内存不足

来自分类Dev

使用AFNetworking NSOperations连续下载大量文件.....内存不足

来自分类Dev

如何使用Retrofit2下载文件?

来自分类Dev

使用大字节数组下载大文件会导致“内存不足”

来自分类Dev

带有curl的下载文件sftp内存不足

来自分类Dev

下载文件时内存不足异常(DevExpress Filemanager)

来自分类Dev

使用Retrofit 2.0和DownloaManager下载文件

来自分类Dev

使用Retrofit 2.0和Spring Server下载文件

来自分类Dev

使用SharpZipLib压缩大文件导致内存不足异常

来自分类Dev

使用awk内存不足

来自分类Dev

上载文件时内存不足

来自分类Dev

使用Retrofit 2上传文件

来自分类Dev

由于手机内存不足,下载文件失败时出现 URLSession 错误

来自分类Dev

文件下载-内存不足(OOM)

来自分类Dev

使用AFNetworking下载文件时出现内存警告

来自分类Dev

Seaborn:使用boxplot导致内存不足

来自分类Dev

GPU内存不足后使用RAM

来自分类Dev

使用perl()时MATLAB内存不足

来自分类Dev

使用cupy时内存不足

来自分类Dev

使用Android位图的内存不足错误

来自分类Dev

使用Android位图时内存不足

来自分类Dev

使用ImageView的内存不足错误

来自分类Dev

使用Fortify的PermGen内存不足错误

来自分类Dev

使用流...仍然内存不足

来自分类Dev

使用Retrofit 2.0上传文件

来自分类常见问题

使用密码解密大文件时出现内存不足异常

来自分类Dev

使用XLConnect将Excel文件读取到R:Java内存不足

来自分类Dev

使用块上传时,大于3Mb的文件出现内存不足错误

Related 相关文章

热门标签

归档