Android 多线程断点续传

多线程和断点续传为什么要用他呢

多线程是为了提高下载效率,断点续传是因为你要下载一个大的文件,或其他原因终止了,下一次可以接着下,

断点续传怎么做

首先http协议里是支持断点续传的,http协议,头字段里有个Ranges字段,这个Ranges字段可以指定当前线程从什么位置下载到什么位置,这就为断点续传提供了可能性

多线程断点续传

如果要做多线程的,就是把一个任务分成多个任务来做,每个线程都做自己的任务,只要指定好开始的位置和结束的位置就可以了

我们在断点续传的时候,如果这次断了或者是暂停了,我们就把这个位置记录下来,记录在文件或数据库里,只要把线程的id和当前

线程做了多少工作,把他记录下来,下一次在继续工作的时候,就把这个位置放进Ranges字段里,就可以继续下载了

怎么保存

首先不能把任务的顺序打乱,要在内存中开辟一块空间来存储这个任务,这个是用多线程,每个线程都负责自己的任务,那么我们得有随机能访问磁盘的位置跳过去写数据,就可以用RandomAccessFile着个工具类,用的是seek 这个方法

比如:我第一个线程下载的是第一段的任务,第二段也在工作,开始写为位置都要过去,用seek过去,seek他的位置,这样写出来的文件才是完整的

你可能感兴趣的:(Android 多线程断点续传)