点击上方“阿拉奇学Java”,选择“置顶或者星标

优质文章第一时间送达!

推荐阅读 | 大白话讲解技术专业用语

很多人都会遇到下载相关的需求,如果是只下载一个文件那还好,可需求有时候并不会那么简单,领导一句话:下载要支持多任务并行下载,产品经理妹子再来一句:用户下载失败后,下次进来要能接着之前的继续下载,好像有个专业的名词,嗯,叫做断点续传。

这个时候你的压力就来了:mmp,又要多任务并行,又要断点续传,你行你来!

今天我给大家推荐个开源库,解决这一问题。这个开源库是我无意间看到的,觉得还不错,就想着分享给你们。

这个开源库的地址是:https://github.com/AriaLyy/Aria

已经有2.9k star,它的特点是:

  • 简单、方便

  • 可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用

  • 支持HTTP\FTP断点续传下载、多任务自动调度

  • 支持多文件打包下载,多文件共享同一进度(如:视频 + 封面 + 字幕)

  • 支持下载FTP文件夹

  • 支持HTTP表单上传

  • 支持文件FTP断点续传上传

  • 支持FTPS断点续传,see

  • 支持https地址下载

  • 支持多线程分块下载,能更有效的发挥机器IO性能

等等

看起来很牛逼,是不是?下面简单介绍下使用方式。

引入库

implementation 'com.arialyy.aria:core:3.7.8-pre-1'annotationProcessor 'com.arialyy.aria:compiler:3.7.8-pre-1'

# 如果需要使用ftp,请增加该组件implementation 'com.arialyy.aria:ftpComponent:3.7.8-pre-1'# 如果需要使用m3u8下载功能,请增加该组件implementation 'com.arialyy.aria:m3u8Component:3.7.8-pre-1'

如果出现android support依赖错误,请将

compile 'com.arialyy.aria:core:'

替换为

api('com.arialyy.aria:core:'){   exclude group: 'androidx.appcompat.app'}

如果你使用的是kotlin,请使用kotlin官方提供的方法配置apt:

https://www.kotlincn.net/docs/reference/kapt.html

使用

由于Aria涉及到文件和网络的操作,因此需要你在manifest文件中添加以下权限,如果你希望在6.0以上的系统中使用Aria,那么你需要动态向安卓系统申请文件系统读写权限。

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

例子为单任务下载,只需要很简单的代码,便可以实现下载功能。

  • 创建任务

  long taskId = Aria.download(this)      .load(DOWNLOAD_URL)     //读取下载地址      .setFilePath(DOWNLOAD_PATH) //设置文件保存的完整路径      .create();   //创建并启动下载
  • 停止\恢复任务
  Aria.download(this)      .load(taskId)     //读取任务id      .stop();       // 停止任务      .resume();    // 恢复任务

任务状态的获取

基于解耦合的考虑,Aria的下载功能是和状态获取相分离的,状态的获取并不会集成到链式代码中,但是Aria提供了另一种更简单更灵活的方案。

通过注解,你可以很容易获取任务的所有状态。

  1. 将对象注册到Aria

protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Aria.download(this).register();}
  1. 通过注解获取任务执行状态注意:
  • 注解回掉采用Apt的方式实现,所以,你不需要担心这会影响你机器的性能
  • 被注解的方法不能被private修饰
  • 被注解的方法只能有一个参数,并且参数类型必须是DownloadTaskUploadTaskDownloadGroupTask
  • 方法名可以为任意字符串
//在这里处理任务执行中的状态,如进度进度条的刷新@Download.onTaskRunning protected void running(DownloadTask task) {    if(task.getKey().eques(url)){        ....        可以通过url判断是否是指定任务的回调    }    int p = task.getPercent();  //任务进度百分比    String speed = task.getConvertSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开       String speed1 = task.getSpeed(); //原始byte长度速度}

@Download.onTaskComplete void taskComplete(DownloadTask task) {    //在这里处理任务完成的状态}

更详细的使用方式我就不介绍了,大家参考文档吧:

https://aria.laoyuyu.me/aria_doc

看到这里啦,说明你对这篇文章感兴趣,帮忙一下或者点击文章右下角在。感谢啦!关注公众号,回复「进群」即可进入无广告技术交流群。同时送上250本电子书+学习视频作为见面礼!有你想看的精彩 大白话讲解技术专业用语看完知乎轮子哥的编程之路,我只想说,收下我的膝盖...慌了,居然被问到怎么做高并发系统的限流史上最易懂的 Kubernetes 儿童插图指南程序员开发了一款软件,完成了舔狗的绝地反杀(代码开源)!来,手撸一个简版Redis(附源码)在服务器上排除问题的头 5 分钟

asp.net core文档下载_推荐一个必备的开源项目 (附下载链接)相关推荐

  1. api 开源文档编写_如何为您的开源项目编写有效的文档

    api 开源文档编写 不幸的是,好的代码并不能说明一切. 即使是解决世界上最紧迫问题的设计最精美,编写最出色的代码库,也不会自己采用. 开源创建者您需要为您的代码说话,并为您的创作注入生命. 那就是技 ...

  2. .NET文档处理套包GroupDocs.Total for .NET新版发布 | 附下载

    GroupDocs.Total for .NET 是.NET的文档管理套包, 能够在.NET应用程序中查看.导出.注释.比较.签名.自动化和搜索文档. GroupDocs.Total for .NET ...

  3. asp html转word文档,asp生成word文档

    asp生成word文档 今天在处理一个在线申请功能时候,需要生成word文档.在网上找了些资料学习,终于成功了.下面是个简单的例子.其中程序包括index.htm,createdoc.asp.在之前你 ...

  4. 推荐一个Python的开源小工具大合集!

    今天推荐一个python的开源项目 python写的各种小工具,涉及的知识比较多,包括pyqt5.简单的爬虫.文本匹配.计算器.二维码制作.端口扫描器等等. 开源地址 https://github.c ...

  5. 有奖征集!HMS Core文档众测,人人都是体验官

    HMS Core经历多个版本的发展,开放了越来越多的能力.开发者文档是开发者接触HMS Core的第一界面,为了提升开发者接入效率和体验,产品资料团队在2020年开展了第一季文档体验官活动,收集了10 ...

  6. 用于文档上下文感知推荐的卷积矩阵分解

    论文:Kim D H, Park C, Oh J, et al. Convolutional Matrix Factorization for Document Context-Aware Recom ...

  7. python docx 合并文档 图片_不再为处理PDF烦恼,python处理操作PDF全攻略

    本篇聊下Python对pdf的各种操作,包含pdf转word,pdf转图片,pdf翻转,加密,加水印等. pdf转换word文档 保留格式 pdf转换为word文档,被大众经常使用的是纯Python库 ...

  8. python开发技术文档范文_程序员编写技术文档的新手指南

    这是一篇帮助你给第一个项目写文档的指南. 万事开头难,我希望这份指南能把你引导到正确的道路上. 最后,你应该有一个可以公开发布的项目. 请轻松地阅读完这篇文章,或者简单地把它当作参考. 为什么要写文档 ...

  9. 多人在线编辑文档 开发_太方便了,支持多人同时编辑,电脑和手机端实时同步保存...

    平时很多小伙伴都有编辑文档的需求,而且有时需要分工合作,将它们发送给自己的朋友或者同事等等,多人一起才能完成一项任务.除了互相来回发送显得不方便外,只能用手机或电脑单一的编辑,不能随时随地操作也很影响 ...

最新文章

  1. 利用Charles抓https包
  2. BEC攻击危害惊人 3年造成23亿美元损失
  3. ios android 录音格式,跨系统的录音格式兼容性问题: iOS Android
  4. 数据库事务的四大特征
  5. php asp写法,asp/php常用的库连接文件代码写法大全
  6. mysql outfile raw_解决 Mysql outfile 的报错问题!
  7. VMware vSAN性能测试那点后续的事
  8. Android学习笔记---android平台中利用,SAX解析xml
  9. asyncawait异步请求处理办法
  10. MVC模式利用xib文件定制collectionCell
  11. 学了python能干啥举例-学了Python可以做哪些有趣的东西
  12. 【IO面试题】打印目录树形结构,并输出到file.txt中
  13. 计算机专业 哪里的好,正规计算机专业哪里好
  14. out.print 嵌套html代码_代码规范之前端编写码规范
  15. 关系抽取(relation extraction)综述
  16. matlab改变直方图数量级,直方图规定化——Matlab实现及其原理
  17. sql server备份及导出表数据和结构
  18. pacs系统数据库服务器,医用PACS系统数据库云计算的设计
  19. 全屋智能抢占“中控”,华为、海尔、小米们谁离用户最近?
  20. 管理好你的20~30岁

热门文章

  1. 创建目录_Word创建自动目录,你会了吗?
  2. python编程入门第一课教案_python编程从入门到实践 第一课:输入输出
  3. caused by: java.lang.outofmemory_Caused by: java.lang.OutOfMemoryError: PermGen space
  4. Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)
  5. Halcon PDF文档(hdevelop_users_guide)学习总结之二——创建新算子
  6. Use Namesapce 使用方法简介
  7. 中国计算机信息系统集成行业协会有含金量吗,系统集成工程师证书的含金量怎么样...
  8. 利用Python制作一个“电子记事本”
  9. jQuery系列 第五章 jQuery框架动画特效
  10. 打破“信息孤岛”不能透支信息安全