例如,我正在从服务器下载一个文件,在连接丢失期间我的下载是 30%,一段时间后我获得了连接。现在我想从 30% 开始下载,而不是从0%开始。如何实现这个asynctask android。
如果还有其他选择,请告诉我。???
最佳答案
您需要先计算出您实际下载了多少字节。我建议您在下载文件时用不同的名称保存文件,这样您就可以轻松查看是否有未完成的下载。
首先检查您的文件状态,了解您下载了多少。
private long isIncomplete(){
File from = new File(dir,fileName+"-incomplete");
if(from.exists()){
Log.d("status","download is incomplete, filesize:" + from.length());
return from.length();
}
return 0;
}
然后在创建您的 http 请求时,您可以告诉服务器从什么时候开始为您提供文件,以便您可以继续下载。
long downloaded = isIncomplete();
urlConnection.setRequestProperty("Range", "bytes="+(downloaded)+"-");
参见 this class我几年前写的一个完整的实现。
更新:我建议您不要为此使用共享首选项。 SSOT声明您仅从一个来源获取信息,因此从下载的文件中读取进度。
关于android - 如何在 asynctask android 中恢复下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42311636/