Aandroid 多线程断点续传同时下载多个大文件
转载请注明出处:http://blog.youkuaiyun.com/luoshishou/article/details/51472921
最近学习在Android环境中一些网络请求方面的知识,其中有一部分是关于网络下载方面的知识。在这里解析一下自己写的demo,总结一下自己所学的知识。下图为demo的效果图,仿照一些应用下载商城在ListView中列出加载项,然后可以可以下载和停止。
![]()
1概述
这里有几个比较重要的类DownloadManager、DownloadService、DownloadTask、ThreadDAOImpl。主要的下载流程如下。(1) DownloadManager 负责下载任务的调配,以及下载服务DownloadService的启动(2) DownloadService 主获取下载文件的的一些信息,包括文件的名字、文件的长度等,并创建下载任务DownloadTask(3) DownloadTask 是正式下载文件的类,首先查看数据库里有没保存过相应的断点,并从相应的断点开始下载,如果没有则将文件分段,并启动下载(4) ThreadDAOImpl 数据库操作类,主要是保存线程下载的断点信息
2多线程断点续传
当然这里最核心的部分就是多线程断点续传,原来不是很难,就是将要下载的文件分割成多个部分,每个部分使用的不同的线程同时下载。
2.1获取下载文件长度,设置本地文件
在DownloadService 设置下载文件的信息,如下一段代码:
class InitThread extends Thread { // FileInfo fileInfo; TaskInfo taskInfo; public InitThread (TaskInfo taskInfo) { this.taskInfo