软件简介

Aria

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

Aria有以下特点:

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

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

支持https地址下载 在配置文件中很容易就可以设置CA证书的信息

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

支持上传操作

Aria怎样使用?

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

下载

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

示例

性能

使用

由于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_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.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.

android自定义下载框架,Android_DownloadUtil相关推荐

  1. 更好的Android多线程下载框架

    /*** 作者:Pich* 原文链接:http://me.woblog.cn/* QQ群:129961195* Github:https://github.com/lifengsofts*/ 概述 为 ...

  2. android 自定义下载器,表盘自定义工具下载-表盘自定义工具 安卓版v4.1.0-pc6手机下载...

    表盘自定义工具是一款让你自己就能够轻松的实现对小米手环4的自定义软件,表盘自定义工具没有特别复杂的操作只需要你按照教程来一步步进行操作,即可像Apple Watch一样自定义的控制你小米手环的表盘.欢 ...

  3. android 自定义下载器,表盘自定义工具下载

    小米表盘自定义工具最新版适合购买了小米手环系列的用户来使用,这里有丰富的表盘壁纸和主题,支持自由切换,也可以自己diy表盘,还有非常多的资源包可供下载哦,让你的表盘变得与众不同,欢迎有需要的朋友下载使 ...

  4. 玩一玩Android下载框架

    前言 继上篇<不一样的HTTP缓存体验>已经有一段时间了,一直没写教学型文章不是因为太忙,想了很久不知道以什么为主题,有个哥们看了我的开源项目CrazyDaily,好像对下载挺感兴趣,那我 ...

  5. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...

    Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...

  6. android的一个下载框架Aria

    http://www.jianshu.com/p/ba32dc499db3 https://github.com/AriaLyy/Aria 本文主要介绍开源项目Aria的使用. Aria项目源于15年 ...

  7. Android自定义View如此简单 实现点击动画+进度刷新的提交/下载按钮(填坑面试题)

    SubmitButton 背景 实现思路 继承View 面试题:构造方法如何选择 自定义属性 面试题:styleable.AttributeSet.TypedArray的关系 测量宽高 面试题:UNS ...

  8. Android常用开源框架

    快速索引 框架名称 上榜关键字 1.Retrofit 网络 2.okhttp 网络 3.Butter Knife 代码模板 4.MPAndroidChart 图表 5.glide 图片 6.leakc ...

  9. android开源项目框架大全:《IT蓝豹》

    2019独角兽企业重金招聘Python工程师标准>>> android开源项目框架大全: 1.多页切换TabHost 9 android-sticky-viewpager ViewP ...

最新文章

  1. cmd中操作mysql_Windows中cmd操作mysql
  2. php显示控制器不存在,phpcms控制器不存在解决方法
  3. 有没有检查c语言编译错误的软件,求大佬解答,为什么这个程序编译软件检查不出错误...
  4. PythonGUI编程|使用Tkinter制作快递查询软件
  5. linux分区方案 arv,Linux运维 第三阶段 (九)NFS
  6. linux 创建LVM磁盘
  7. 你真的把数据库事务搞懂了吗,有图有真相,图文并茂!
  8. Activity 生命周期及其栈管理方式
  9. c语言超时自动退出,Golang实现for循环运行超时后自动退出的方法
  10. php dp0,DOS批处理中%cd%与%~dp0的区别详解
  11. dda算法c语言opengl实现
  12. 什么叫误差的反向传播,反向传播误差怎么算的
  13. PHP为什么是最好的编程语言?
  14. MYSQL存储过程详解(创建、变量的定义、异常、错误输出、游标、调试)
  15. iOS创建pch文件
  16. 眼底图像血管增强与分割--(5)基于Hessian矩阵的Frangi滤波算法
  17. python文件的基本操作_Python文件基本操作
  18. linux下启动node服务出现events.js:167 throw er; // Unhandled ‘error‘ event 的解决方法
  19. java爬虫框架之webMagic
  20. 校园二手交易平台课程设计正文

热门文章

  1. 第二阶段个人冲刺03
  2. 从程序集/类库下面取文件
  3. MongoDB对文档的操作
  4. AtomicInteger
  5. Reverse Words in a String
  6. Thrust快速入门教程(三)——迭代器与静态调度
  7. C++语言程序设计之关联容器类型
  8. 计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~
  9. matlab 中的dir函数使用
  10. 怎么关闭win10的自动更新