【问题标题】:How to resume download from where it left off? [closed]如何从中断的地方继续下载? [关闭]
【发布时间】:2013-08-16 16:37:02
【问题描述】:

我知道如何为Android 制作一个简单的下载器。诀窍很简单,您建立连接,开始获取数据,然后以与接收数据相同的方式将数据放入文件中,从而最终下载文件。

但是如果我想添加pauseresume 功能怎么办?

好的,我可以通过获取文件的长度并将其与来自HttpURLConnection 的内容长度进行比较来了解写入了多少字节,然后开始写入它旁边的字节。

如何告诉服务器向我发送我需要的字节而不是从一开始就发送字节?

注意:我不是在寻找预先存在的库来帮助解决这个问题。

【问题讨论】:

  • 这不是典型的下载服务器的工作方式。暂停和恢复功能需要特殊协议。
  • @SotiriosDelimanolis 请详细说明一下? :)
  • 您可以在请求中发送存储在手机中的文件大小,然后在您的服务器上获取该大小并开始发送下一个文件。
  • here。有一个 Range 标头可以用来告诉服务器从哪里开始,但不要假设所有服务器都可以处理它。这是维基条目:en.wikipedia.org/wiki/…
  • @SotiriosDelimanolis 我怎么知道服务器没有处理它? :)

标签: java android download httpurlconnection


【解决方案1】:

您可能需要查看 Android 开发者文档中的 DownloadManager 类。

从文档中,它提到:

下载管理器是处理长时间运行的系统服务 HTTP 下载。客户端可能会请求将 URI 下载到 特定的目标文件。下载管理器将执行 在后台下载,负责 HTTP 交互和 重试下载失败后或跨连接更改和 系统重启。

此 DownloadManager 类可从 API 9+(姜饼及更高版本)获得。

【讨论】:

  • 这个想法是重新发明轮子以了解更多信息。我是学生:-)
  • DownloadManager 是否提供启动和暂停的方法?
  • 为什么是-1? Stackoverflow 通常被用作一种机制来帮助人们避免重新发明轮子。该问题并未说明这需要避免使用图书馆...请将此规定添加到您的问题中。其他人可能会受益于 DownloadHelper 类的知识。
  • @MiStr 我没有-1,伙计! :-) 给了你一个+1,所以你是平衡的:)
  • 很抱歉没有回答直接的问题。是的,这可能只是一个有用的评论,希望避免重新发明轮子:)
猜你喜欢
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多