当前位置: 首页 > 知识库问答 >
问题:

OutOfMemory尝试使用改造@Streaming注释下载大文件时出错

东门茂实
2023-03-14

我正在使用改装客户端下载文件,但当有大文件(200 MB)时,它会抛出<code>java.lang.OutOfMemoryError:注释,这是我的下载服务方法

@Streaming
@GET("{path}")
suspend fun downloadFile(@Path("path") path: String): Response<ResponseBody>`

这里是调用代码片段

suspend fun downloadFile(remotePath: String): FileDownloadResponse {
  try {
    val response = api.downloadFile(remotePath)
    if (response.isSuccessful) {
       FileDownloadResponse.Success(response.body()!!)
    } else {
      FileDownloadResponse.Fail()
    }
   } catch (e: Exception) {
     e.printStakTrace()
     FileDownloadResponse.Fail(throwable = e)

   }

}

val response = remoteRepositroy.downloadFile(remotePath)
val writeResult = response.body.writeResponseBodyToDisk()

改装版本= 2.6.0

协同程序版本=1.3.0-M1

共有2个答案

鲁洋
2023-03-14

尝试使用下载管理器下载大文件

您可以通过@CommonsWare在此处找到完整的示例

https://github.com/commonsguy/cw-android/tree/master/Internet/Download

黄彬
2023-03-14

我通过将HttpLogingInterceptor日志级别从BODY更改为HEADERS来修复它

HttpLoggingInterceptor().apply {
   level = HttpLoggingInterceptor.Level.HEADERS
})

看似奇怪的错误修复,但它有效

 类似资料:
  • 我确实在这里遇到了这个问题,但根据线程“错误消失了,我不知道它是如何修复的”...在selenium中尝试使用@FindBy注释时出错 这是我写的代码。奇怪的是,我已经在page对象类上定义了另一个web元素,它工作得很好。我似乎就是不明白问题出在哪里。我只是在学硒,从来没有遇到过这个问题。我试着在网上搜索答案,但似乎找不到这个特定问题的答案。 这是page对象类中的第一个web元素,它工作得很好

  • 下面的代码适用于小文件( 我得到: 19161088 HTTP响应(_body=无,缓冲区= 使用Python下载时,但是 0 HTTPResponse(_body=None,buffer=None,code=599,effective_url=)http://releases.ubuntu.com/16.04.1/ubuntu-16.04.1-desktop-amd64.iso?_ga=1.17

  • 问题内容: 我在Bower注册我的bower.json文件时遇到问题。任何帮助将不胜感激。 当我尝试使用Bower注册我的项目时 我收到错误消息: 我的bower.json的内容很简单(为了解决问题,我删除了空格和换行符): (请注意,该文件中没有?) 这是我运行Bower Register时屏幕上显示的详细信息: 问题答案: 您的Bower json文件(在此处可见:https : //raw.

  • [ERROR]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀“arch type”的插件[本地(C:\用户\Varun. m2\仓库),中央(http://repo.maven.apache.org/maven2)] 如果我尝试访问http://repo.maven.apache.org/maven2从浏览器中,我得到一个错误

  • 问题内容: 我需要使用curl下载远程文件。 这是我的示例代码: 但是它不能处理大文件,因为它首先读取内存。 是否可以将文件直接流式传输到磁盘? 问题答案:

  • 我们有一个运行在Linux上的Weblogic服务器,有多个受管服务器。我所关心的托管服务器的最大堆大小为1024MB。该服务器上部署了多个应用程序。其中一个应用程序处理来自REST api的响应来下载250MB的文件。对于大于50 MB的文件,有时没有问题,但有时服务器会因OOM错误而崩溃。以下是我的代码: 由于存在内存问题,我尝试采用InpuStream方法。以下是更改后的代码: 此代码没有进