android - 如何在 asynctask android 中恢复下载

标签 android android-asynctask download

例如,我正在从服务器下载一个文件,在连接丢失期间我的下载是 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/

相关文章:

android - 正确处理元素的方法 Click Recycler View

Android:带有预览回调的相机异步任务

javascript - 下载当前用户时间作为文件名

C# - 为高端服务器使用异步

android - 从 AsyncTask 更新 ListView

c# - 创建自定义文件下载。 MD5 哈希值不匹配

android - 如何在不使用资源的情况下修改字体

android - 如何仅允许在游戏过程中使用特定的布局状态

Android 屏幕滑动 Action

android - 提高谷歌地图的性能