美文网首页
记录下用到的第三方库Aria

记录下用到的第三方库Aria

作者: 坑逼的严 | 来源:发表于2021-08-10 10:52 被阅读0次

Aria是一个多任务下载库,他可以http下载任务也可以FTP下载任务,多任务打包合并下载,上传也支持了,还可以支持m3u8送文件下载,类似于UC的网页视频下载,变下还能边播放,牛皮了。
文档地址,很详细哦,要用的话建议先看看能不能满足自己的需求。
https://aria.laoyuyu.me/aria_doc/
引入库:

implementation 'com.arialyy.aria:core:3.7.9'
annotationProcessor 'com.arialyy.aria:compiler:3.7.9'
 # 如果需要使用ftp,请增加该组件
implementation 'com.arialyy.aria:ftpComponent:3.7.9'
 # 如果需要使用m3u8下载功能,请增加该组件
implementation 'com.arialyy.aria:m3u8Component:3.7.9'

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

compile 'com.arialyy.aria:core:<last-version>'

替换为

api('com.arialyy.aria:core:<last-version>'){
   exclude group: 'androidx.appcompat.app'
}

如果你使用的是kotlin,请使用kotlin官方提供的方法配置apt:https://www.kotlincn.net/docs/reference/kapt.html
注:3.7 以上版本已经适配了AndroidX,如果是使用support库的,可使用老版本

使用

清单文件注册权限

<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.ACCESS_NETWORK_STATE"/>

注册aria
在Activity的onCreate、fragment的onCreate、java的构造函数中使用Aria.download(this).register();便可以实现注册。 如在activity中:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Aria.download(this).register();
}

创建任务
创建并启动一个下载任务,创建任务完成后,可获取到该任务的id。

long taskId = Aria.download(this)
      .load(DOWNLOAD_URL)     //读取下载地址
      .setFilePath(DOWNLOAD_PATH) //设置文件保存的完整路径
      .create();   //启动下载

停止\恢复任务
使用通过创建任务获取的任务id,可对任务进行停止、恢复等操作

Aria.download(this)
        .load(taskId)
        .stop();
        //.resume();

接受任务回调
基于解耦合的考虑,Aria的下载功能是和状态获取相分离的,状态的获取并不会集成到链式代码中,但是Aria提供了另一种更简单更灵活的方案。 通过注解,你可以很容易获取任务的所有状态。

//在这里处理任务执行中的状态,如进度进度条的刷新
@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) {
    //在这里处理任务完成的状态
}

相关文章

网友评论

      本文标题:记录下用到的第三方库Aria

      本文链接:https://www.haomeiwen.com/subject/lpexbltx.html