Retrofit 2.0 超能实践(四),完成大文件断点下载

本文介绍了如何使用Retrofit 2.0进行大文件下载,包括断点续传和多线程并发下载。在`ApiService`中定义下载接口,使用`@Streaming`注解处理大文件。`DownLoadManager`负责文件写入和类型判断。通过记录下载进度并在header中加入,实现基本的断点下载。多线程下载思路是将文件总长度均分,创建多个线程分别下载,最后合并。文章提供了项目GitHub链接供参考。
摘要由CSDN通过智能技术生成

作者:码小白
文/CSDN 博客
本文出自:http://blog.csdn.net/sk719887916/article/details/51988507 码小白

通过前几篇系统的介绍和综合运用,忘记介绍文件下载功能了,有朋友问到,目前APP文件下载主要有断点续传,多线程并发下载,多类型下载,今天就介绍下其Retrofit下载文件功能。

ApiService

编写API,执行下载接口功能。

public interface ApiService {
  @Streaming
  @GET
  Observable<ResponseBody> downloadFile(@Url String   fileUrl);
}

url由于是可变的,因此用 @URL 注解符号来进行指定,大文件官方建议用 @Streaming 来进行注解,不然会出现IO异常,小文件可以忽略不注入。如果想进行断点续传的话 可以在此加入header,但不建议直接在api中写死,每个下载的请求大小是不同的,在拦截器加入更为妥善。

DownLoadManager

实现一个下载管理者 来进行文件写入,类型判断等,如果想做完善,可以判断下http的请求头 content-length, content- type, RANGE 第一个用来判断文件大小,第二个文件类型,第三个是文件从哪儿开始下载,如果对下载来源校验可以加入referer, 不是目标来源的可以不予下载权限。

public class DownLoadManager {

  private static final String TAG = "DownLoadManager";

 private static String APK_CONTENTTYPE = "application/vnd.android.package-archive";

 private static String PNG_CONTENTTYPE = "image/png";

 private static String JPG_CONTENTTYPE = "image/jpg";

 private static String fileSuffix=
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值