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()方法






评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值