Aria

Aria项目源于15年工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。

Aria有以下特点:

简单、方便

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

支持任务自动调度,使用者不需要关心任务状态切换的逻辑

通过Aria的事件,能很容易获取当前下载任务的下载状态

一句代码加可以获取当前的下载速度

一句代码就可以动态设置最大下载数

通过修改配置文件很容易就能修改下载线程数

支持https地址下载

在配置文件中很容易就可以设置CA证书的信息

支持300、301、302重定向下载链接下载

支持上传操作

Aria怎样使用?

如果你觉得Aria对你有帮助,您的star和issues将是对我最大支持. ^_^

下载

compile 'com.arialyy.aria:Aria:3.1.4'

示例

性能

使用

由于Aria涉及到文件和网络的操作,因此需要你在manifest文件中添加以下权限

使用Aria进行下载

添加任务(不进行下载),当其他下载任务完成时,将自动下载等待中的任务 Aria.download(this)

.load(DOWNLOAD_URL)

.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk")//文件保存路径

.add();

下载 Aria.download(this)

.load(DOWNLOAD_URL) //读取下载地址

.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk") //设置文件保存的完整路径

.start(); //启动下载

暂停 Aria.download(this).load(DOWNLOAD_URL).pause();

恢复下载 Aria.download(this).load(DOWNLOAD_URL).resume();

取消下载 Aria.download(this).load(DOWNLOAD_URL).cancel();

下载状态获取

如果你希望读取下载进度或下载信息,那么你需要创建事件类,并在onResume(Activity、Fragment)或构造函数(Dialog、PopupWindow),将该事件类注册到Aria管理器。

创建事件类 final static class MySchedulerListener extends Aria.DownloadSchedulerListener{

@Override public void onTaskPre(DownloadTask task) {

super.onTaskPre(task);

}

@Override public void onTaskStop(DownloadTask task) {

super.onTaskStop(task);

}

@Override public void onTaskCancel(DownloadTask task) {

super.onTaskCancel(task);

}

@Override public void onTaskRunning(DownloadTask task) {

super.onTaskRunning(task);

}

}

将事件注册到Aria @Override protected void onResume() {

super.onResume();

Aria.whit(this).addSchedulerListener(new MySchedulerListener());

}

使用广播接收器接收Aria的任务下载状态

有的时候,你可能希望在广播中接收Aria的下载事件,那么你需要

在中把 中的value改为true

Aria参数配置

配置文件设置参数

创建 aria_config.xml 文件,将其放在 assets 目录下,添加以下内容

代码中设置参数

除了文件方式外修改Aria参数外,同样的,你也可以在代码中动态修改Aria参数

通过 Aria.get(this).getDownloadConfig() 或 Aria.get(this).getUploadConfig() 直接获取配置文件,然后修改参数

如以下所示:

// 修改最大下载数,调用完成后,立即生效

// 如当前下载任务数是4,修改完成后,当前任务数会被Aria自动调度任务数

Aria.get(this).getDownloadConfig().setMaxTaskNum(3);

常用接口

停止所有任务

Aria.download(this).stopAllTask();

删除所有任务

Aria.download(this).removeAllTask();

获取当前任务的下载速度 速度参数有点特殊,需要

@Override public void onTaskRunning(DownloadTask task) {

//如果你打开了速度单位转换配置,将可以通过以下方法获取带单位的下载速度,如:1 m/s

String convertSpeed = task.getConvertSpeed();

//如果你有自己的单位格式,可以通过以下方法获取原始byte长度

long speed = task.getSpeed();

}

获取下载的文件大小、当前进度百分比 同样的,你也可以在DownloadTask对象中获取下载的文件大小

@Override public void onTaskRunning(DownloadTask task) {

//获取文件大小

long fileSize = task.getFileSize();

//获取单位转换后的文件大小

String fileSize1 = task.getConvertFileSize();

//当前进度百分比

int percent = task.getPercent();

}

tips:为了防止内存泄露的情况,事件类需要使用staic进行修饰

上传

添加任务(只添加,不上传)

Aria.upload(this)

.load(filePath) //文件路径

.setUploadUrl(uploadUrl) //上传路径

.setAttachment(fileKey) //服务器读取文件的key

.add();

上传

Aria.upload(this)

.load(filePath) //文件路径

.setUploadUrl(uploadUrl) //上传路径

.setAttachment(fileKey) //服务器读取文件的key

.start();

取消上传

Aria.upload(this).load(filePath).cancel();

混淆配置

-dontwarn com.arialyy.aria.**

-keep class com.arialyy.aria.**{*;}

其他

有任何问题,可以在 issues 给我留言反馈。

后续版本开发规划

下载任务可以设置优先级

实现上传队列调度功能

开发日志

v_3.1.4 修复快速切换,暂停、恢复功能时,概率性出现的重新下载问题,添加onPre()回调,onPre()用于请求地址之前执行界面UI更新操作。

v_3.1.2 优化代码结构

v_3.1.0 添加Aria配置文件,优化代码

v_3.0.3 修复暂停后删除任务,闪退问题,添加删除记录的api

v_3.0.2 支持30x重定向链接下载

v_3.0.0 添加上传任务支持,修复一些已发现的bug

v_2.4.4 修复不支持断点的下载链接拿不到文件大小的问题

v_2.4.3 修复404链接卡顿的问题

v_2.4.2 修复失败重试无效的bug

v_2.4.1 修复下载慢的问题,修复application、service 不能使用的问题

v_2.4.0 支持https链接下载

v_2.3.8 修复数据错乱的bug、添加fragment支持

v_2.3.6 添加dialog、popupWindow支持

v_2.3.3 添加断点支持、修改下载逻辑,让使用更加简单、修复一个内存泄露的bug

v_2.3.1 重命名为Aria,下载流程简化

v_2.1.1 增加,选择最大下载任务数接口

License

Copyright 2016 AriaLyy(https://github.com/AriaLyy/Aria)

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

java 快速框架下载_Aria:简单易用、高效的下载框架(Java)相关推荐

  1. 一款基于RxJava2+Retrofit2实现简单易用的网络请求框架

    本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置, ...

  2. 简单易用的开源ORM框架SqlSugar v5.0.0.19源码

    介绍: SqlSugar是一款简单易用的开源ORM框架. 框架优点: 简单易用.功能齐全.高性能.轻量级.服务齐全 支持数据库:MySql.SqlServer.Sqlite.Oracle.postgr ...

  3. idea log 不输出error_还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

    Bunyan是一个简单易用的JS日志框架,可以工作在多种环境下,这里以Nodejs为例说明Bunyan的基本用法.是时候替换console.log的写法了. 安装 npm install --save ...

  4. java通讯框架_gim: 一个简单易用,稳定高效的及时通讯框架(java、android)

    gim 一个简单易用,稳定高效的及时通讯框架(java) 简介: gim是基于高性能网络框架getty封装的,能简单上手,稳定高效的及时通讯框架 Getty:[https://github.com/g ...

  5. java 快速开发框架平台 二次开发 代码生成器 springmvc SSM后台框架源码

    官网 http://www.fhadmin.org/ D 集成安全权限框架shiro   Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠 ...

  6. 一款简单易用的视频下载工具

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天推荐的这个项目是「downkyi」,哔哩下载姬,一个简单易用的哔哩哔哩视频下载工具,支持批量下载 ...

  7. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)

    简介: 从前几篇分享中能够看出,阿里不愧是"Java技术光明顶",无论是从Java方向的面经数量.质量,还是问题难度上来看,想要拿到阿里Java研发岗位的Offer,都需要面试者拥 ...

  8. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

  9. java实现购买_一个简单的实现购买商品功能的Java小程序

    public class Purchase { public static void main(String[] args) { System.out.println(" * * * * * ...

  10. 计算两个日期相隔天数 java,快速讲解如何计算两个日期相隔的天数(用java实现)...

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到如何计算两个日期相隔的天数(用java实现)的问题,如果我们遇到了如何计算两个日期相隔的天数(用java实现)的情况,该 ...

最新文章

  1. android Image zImage uImage boot.img分别是什么?个人笔记
  2. python【力扣LeetCode算法题库】27-移除元素
  3. 在Spark上用Scala实验梯度下降算法
  4. CLR via C#学习笔记-第十三章-定义接口、继承接口
  5. JPA 实体生命周期图
  6. AppCan的各个js和css的功能说明
  7. 2013年C++A:买不到的数目(互质数)
  8. 带你了解开课吧,Python培训的怎么样?
  9. 双一流2020年调整时间_“双一流”调整名单预测,985大学两升一降,两校退出名校阵营...
  10. Kotlin 1.3带来稳定的协程、合约及其他
  11. 链表c语言代码题库排坐标,[编程入门]链表合并-题解(C语言代码)
  12. 计算有向图可达矩阵Matlab实现
  13. ubuntu系统安装qq教程(超简单,亲测成功)
  14. 《松本行弘的程序世界》精彩书摘
  15. 戴尔服务器上装vmware esxi
  16. css空心三角形_CSS实现空心三角指示箭头
  17. OO ALV 设置搜索帮助的三种方式 ONF4 EVENT
  18. 苹果手机上滑动会卡顿_苹果手机Safari浏览器下滑动卡顿的问题
  19. codeforces 1665A (GCD vs LCM)思维
  20. 【读书笔记】西行漫记

热门文章

  1. python 简介+安装(搬运廖雪峰网站)
  2. redis--服务器与客户端
  3. 一看就懂ReactJS
  4. Android驱动开发第一章
  5. UVA455 - Periodic Strings(周期串)
  6. 九度OJ 1193:矩阵转置 (矩阵计算)
  7. 连接Oracle9i,因字符集造成乱码的解决方法
  8. [转载] java clone方法_Java Calendar clone()方法与示例
  9. 多态加opp内置函数
  10. Spark之Task原理分析