最近尝试了Android 的文件中断续传功能,在此写下一篇博客进行记录。
功能原理
实现文件中断续传功能主要依赖的原理有两个:
- 通过RandomAccessFile文件定位功能在特定位置写入文件
- 通过HTTP 1.1协议的Range头域来获取下载文件的特定部分
代码
1 | public class FileContinueDownload { |
FileContinueDownload为文件中断续传帮助类,通过Android的SharedPreferences来记录文件的下载进度,使用RandomAccessFile的seek方法来找到合适的位置进行文件写入,通过HTTP 1.1的Range头域来获取剩余的部分文件,最终结果或者错误通过监听器进行返回。
测试的例子如下:
1 | public class MainActivity extends AppCompatActivity { |
xml文件就不贴出来了,里面是一个TextView、ProgressBar以及两个Button。
效果如下所示:
下图分别为初始界面、开始下载、暂停下载
))
下载到一半的file_continue_download_test.jpg文件:
继续下载以及下载完成的文件:
)