android 多线程断点续传下载器

多线程断点下载流程图:






多线程断点续传下载原理介绍:

在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度

手机端下载数据时难免会出现无信号断线、电量不足等情况,所以需要断点续传功能

根据下载数据长度计算每个线程下载的数据位置,程序中开启多个线程并发下载

在请求头中设置Range字段就可以获取指定位置的数据,例如:Range: bytes=100-200

在下载过程中记录每个线程已拷贝数据的数量,如果下载中断,下次启动时从记录位置继续下载


实例图:


 一. 进度条使用<Progress>进行配置

1.1 默认为圆形进度条,水平进度条需要配置style属性,android:attr/progressBarStyleHorizontal

      使用android.R.attr.progressBarStyleHorizontal作为样式

1.2 当点击下载按钮时开启多线程下载,下载过程中修改进度条进度

      设置最大刻度:setMax()

      设置当前进度:setProgress()


二. 断点续传

 2.1 断点续传需要在下载过程中记录每条线程的下载进度 (保存在 文件名.temp文件中 同迅雷中的.temp文件的功能)

 2.2 每次下载开始之前先读取数据库,查询是否有未完成的记录,有就继续下载,没有则创建新记录插入数据库

 2.3 在每次向文件中写入数据之后,在数据库中更新下载进度

 2.4 下载完成之后删除数据库中下载记录(文件名.temp文件)


 三. Handler传输数据

 3.1 主线程中创建的View只能在主线程中修改,其他线程只能通过和主线程通信,在主线程中改变View数据

 3.2 我们使用Handler可以处理这种需求

3.3 主线程中创建Handler,重写handleMessage()方法

3.4 新线程中使用Handler发送消息,主线程即可收到消息,并且执行handleMessage()方法






  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值