位置: 编程技术 - 正文

Android 文件下载(断点、多任务并行下载)(android下载文件保存到本地)

编辑:rootadmin

推荐整理分享Android 文件下载(断点、多任务并行下载)(android下载文件保存到本地),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓文件下载,安卓文件下载,Android 文件下载开发,Android 文件下载,Android 文件下载框架,Android 文件下载开发,Android 文件下载框架,Android 文件下载开发,内容如对您有帮助,希望把文章链接给更多的朋友!

以下代码是基于百度云网盘: 中的demo进行优化及功能添加。 以下代码实现功能有:多线程下载、多任务并行下载以及下载进度和下载速度的显示等功能。 实现思路:根据线程数分割待下载文件;利用HttpURLConnection实现各部分文件的下载;利用RandomAccessFile实现下载内容的保存;各线程下载任务信息保存在数据库,以便暂停和恢复下载。 demo已上传到github: 欢迎下载。 效果图:

主要代码DownLoadHelper.java:

这个类没什么好说的,就是创建数据库和数据表。

DownlaodSqlTool.java

单例模式的数据库操作类,主要实现数据的增删改查等操作。

DownloadInfo.java

下载实体类,针对于单个下载线程,保存下载线程对应的文件相关信息,比如当前下载线程负责下载的部分是从文件的哪个点开始的(startPos)、哪个点结束的(endPos)以及当前已经下载了多少(compeleteSize)等信息。

DownloadingInfo.javaAndroid 文件下载(断点、多任务并行下载)(android下载文件保存到本地)

这也是一个下载相关的实体类,针对于一个下载任务(包括多个下载线程)。保存下载任务的下载进度、速度等用于客户端显示的数据。

DownloadHttpTool.java

一个DownloadHttpTool的实例表示一个下载任务,一个下载任务中可以有多个下载线程,可以通过修改常量THREAD_COUNT的方式修改一个下载任务的下载线程数。文件的保存路径是在sdcard中的meiriq-download文件夹,也可以修改到其他路径。 此类中在下载开始的时候首先会执行ready()方法获取文件相关的信息,之后执行startDownload()开启下载线程执行下载。 下载时使用HttpURLConnection类的setRequestProperty方法指定请求头字段实现文件的随机下载(下载从某一个点开始到某一个点结束之际的内容),使用RandomAccessFile实现文件的随机访问(可以从某一个点开始写入数据)。 为了保证下载速度,写入数据库的操作并不是每次写入文件之后都执行,而是在下载出现异常或者暂停等操作之后才写入数据库。所有下载任务全部结束后执行关闭数据流等操作。

DownloadUtil.java

一个单例的类封了”开始“、”暂停“、”继续“、”删除“等下载任务相关操作方法,管理所有下载任务;利用Handler实现下载进度等信息的更新;常量FLAG_FREE标识空闲下载任务;可通过修改常量MAX_COUNT的值的方式修改最大并行下载任务数。 该类管理下载任务的方式:获取该类实例后调用prepare(String urlString)方法添加下载任务,如果没有达到最大并行下载数,则会执行start()开始下载,否则等待其他下载任务下载完成后下载;当一个任务被暂停、删除或者下载完成后执行start()开始新的下载。集合downloadMap保存所有的下载任务,最多MAX_COUNT个。当一个下载任务完成后downloadMap中对应的下载任务变为FLAG_FREE以便后来的任务重复使用,如果FLAG_FREE的任务已存在则直接删除此任务。

MainActivity.java

使用ListView展示待下载任务列表。使用List<String>集合urls保存下载地址。使用View.setTag(url+TAG_PROGRESS/TAG_TOTAL)的方式标记各个任务对应的View。在显示数据的时候使用findViewWithTag(url+TAG_PROGRESS/TAG_TOTAL)的方式取得对应的View;使用Timer定时器,每隔1s刷新一次下载速度。

最后添加连接网络和操作sdcard的权限:

此代码是使用数据库和RandomAccessFile类实现断点下载,除此方法外,还可以用临时文件的方式实现断点下载,具体方法:同以上代码使用HttpURLConnection和setRequestProperty方法实现文件的部分下载,然后每一部分保存为一个临时文件,待全部下载完成后,将所有相关临时文件写入到一个文件,并删除临时文件即可。

webview在红米3上面打开显示错误A WebView method was called on thread &#;Thread-&#;. All WebView methods must be java.lang.RuntimeException:java.lang.Throwable:AWebViewmethodwascalledonthread'Thread-'.AllWebViewmethodsmustbecalledonthesamethread.(ExpectedLooperLooper(main,tid1){f}calledonnull,FYImainL

技术总结--android篇(三)--代码规格和编码规范 命名规则变量名:1)尽量要取有意义的名字,比如说:一个用户名的成员变量,应该写成username,而不要只写个string;2)如果是常量,既在编码过程中

Android System Property 转自:

标签: android下载文件保存到本地

本文链接地址:https://www.jiuchutong.com/biancheng/384229.html 转载请保留说明!

上一篇:Android学习笔记(1)(android自学)

下一篇:webview在红米3上面打开显示错误A WebView method was called on thread 'Thread-9191'. All WebView methods must be(web miui)

  • 金税盘开票软件密码忘记怎么办
  • 账面价值大于计税基础是什么差异
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 附加税的计算公式2023
  • 无形资产摊销年限可以变更吗
  • 企业购进软件系统后如何做账
  • 个体工商户旅馆怎么交税
  • 自行研发无形资产暂时性差异
  • 结转损益后损益类科目为0吗
  • 运费开进发票
  • 免费提供客户试用卷的账务处理?
  • 增值税调整后开具发票
  • 品种法在制造企业中的运用
  • 当地预缴2%什么时候缴纳
  • 收到福利费专票需要认证吗
  • 收费公路通行费增值税电子普通发票
  • 金税盘忘记清卡了
  • 写支票人民币大写有角需要写整吗
  • 流转税与所得税的区别
  • 进口关税和增值税在哪里交
  • 食堂购买蔬菜计算公式
  • windows10如何开机启动软件
  • 去年的发票可以红冲重新开具吗?
  • 路由器间歇性断网怎么解决
  • 印花税的计税依据是含税还是不含税
  • 网页视频播放不流畅原因
  • 什么是资产负债率,如何计算
  • neo什么意思翻译成中文
  • 应付票据到期会计分录怎么做
  • 车间耗材管理办法
  • 挪威最北部
  • php foreach循环遍历数组
  • 结转已销售产品成本20000元
  • 资产负债表中投资总额是什么
  • 期初未缴纳税额怎么计算
  • 注销报税是什么意思
  • 独立核算的分公司的账务处理
  • icse论文
  • sdiff命令 以并排方式合并文件之间的差异
  • 进项税额计入其他流动资产
  • 企业合并兼并收购的区别和联系
  • 用税盘开发票税费扣除是怎么回事?
  • 银行承兑汇票到期怎么兑现
  • 支付委托加工费的记账凭证
  • 将织梦dedecms转换到wordpress
  • 老板出差司机住哪
  • 固定资产清理怎么做账务处理
  • 自然人独资公司可以变更法人吗
  • 开具免税的发票,"税率"栏如何填开?
  • 建筑公司可以开3个点的专票吗
  • SQL Server中的XML数据进行insert、update、delete
  • 个人发票抬头和税号是什么
  • 一般劳务报酬个人所得税退税吗
  • 印花税啥样
  • 库存现金太多违反什么规定
  • 以前年度社保计提出错了怎么调整
  • 劳务费入什么费用
  • 先付款后开票如何入账
  • 机器折旧科目
  • 建筑企业工程管理部职责
  • 应付票据的概述
  • 营业费用这个科目还在用吗
  • 公司增资需要什么流程呢 最新
  • 应收账款是什么意思
  • 简述账套管理的主要内容
  • 房地产开发企业增值税税率
  • sql语句大全实例教程
  • linux系统tar命令
  • windows7个性化菜单
  • linux修改ipv6地址
  • shell 函数 return
  • unity画面效果润色
  • python输入错了怎么办
  • js递增数字
  • python常用的内置逻辑判断函数
  • 落实落地是什么意思
  • 厂房每年要交什么费用
  • 税控盘时间不对有影响吗
  • 山西省税务
  • 印花税零申报表怎么填步骤
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设