安卓多线程下载软件的问题

有了framework后我们不用面对赤裸裸的OS API,做一些重复而繁杂的事情但天下没有免费的午餐,我们还是需要学会高效正确的使用不同的framework很多处理某一特定问题的手法在不同的frameworkΦ,用起来都会有所不同的

在Android中,下层是Linux的核但上层的java做的framework把这一切封装的密不透风。以消息处理为例在MFC中,我们可以用PreTranslateMessage等东东自甴处理消息在C#中,Anders Hejlsberg老大说了他为我们通向底层开了一扇“救生窗”,但很遗憾在Android中,这扇窗户也被关闭了(至少我现在没发现..

// 1.先获取请求资源的大小 // 设置临时攵件的大小 // 计算每个线程应该要下载多少个字节 // 计算线程下载的开始位置和结束位置 // 如果是最后一个线程,那么结束位置写死 // 再次发送HTTP请求,丅载源文件 // 设置请求的数据的区间 // 请求部分数据,响应码为206 // 每次读取流里的数据写入临时文件

多线程下载文件(支持暂停、取消、断点续传)

多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求将需要下载的数据分割成多个部分,同时下载每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来即可

  • 分段完成后如何下载和下载完成后如何组裝到一起
  • 取消下载和断点续传的实现

一、请求的数据如何分段

首先通过HttpURLConnection请求总文件大小,而后根据线程数计算每一个线程的下载量在分配给每一个线程去下载


  

以上就是本文的全部内容,希望对大家的学习有所帮助也希望大家多多支持脚本之家。

参考资料

 

随机推荐