什么是断点续传
指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有必要从头开始上传/下载。可以节省时间,提高速度。
OkHttp 断点下载
断点下载思路
- step 1:判断检查本地是否有下载文件,若存在,则获取已下载的文件大小 downloadLength,若不存在,那么本地已下载文件的长度为 0
- step 2:获取将要下载的文件总大小(HTTP 响应头部的 content-Length)
- step服务器托管网 3:比对已下载文件大小和将要下载的文件总大小(contentLength),判断要下载的长度
- step 4:再即将发起下载请求的 HTTP 头部中添加即将下载的文件大小范围(Range: bytes = downloadLength – contentLength)
DownloadTask.java
/**
* String 在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。
* Integer 后服务器托管网台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。
* Integer 当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。
*/
public class DownloadTask extends AsyncTask
DownloadListener.java
public class DownloadListener {
/**
* 通知当前的下载进度
* @param progress
*/
void onProgress(int progress);
/**
* 通知下载成功
*/
void onSuccess();
/**
* 通知下载失败
*/
void onFailed();
/**
* 通知下载暂停
*/
void onPaused();
/**
* 通知下载取消事件
*/
void onCanceled();
}
总结
这下载有很多细节要搞,下载可以用多线程,下载可以断点续传。后面再写吧。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: .Net 8.0 除gRPC之外的另一个选择,IceRPC之快速开始HelloWorld
作者引言 很高兴啊,我们来到了第一篇,程序员的HelloWorld,快速开始RPC之游 快速入门 演示如何在几分钟内,使用IceRPC,构建和运行一个完整的客户端-服务器(C/S)应用程序. 必要条件: 只要电脑安装 .NET 8 SDK 就行了. 来吧,开始…