任务说明

在Aria中,根据文件和url对应关系分为几种不同的任务:

  • 普通任务
  • 集合任务
  • 特殊任务

无论是普通任务、集合任务、特殊任务,都可以同时执行多个不同的任务,最大任务数可通过配置文件或代码配置。

普通任务

普通任务也叫单文件任务,指的是一个任务只处理一个文件,如:

HTTP下载任务,一个任务只下载一个HTTP文件 HTTP上传任务,一个任务只上传一个文件到HTTP服务器 FTP下载任务,一个任务只下载一个FTP文件 FTP上传任务,一个任务只上传一个文件到FTP服务器

集合任务

集合任务指的是多文件任务,指的是一个任务处理一个url集合中的所有文件,集合任务主要有两种。

  • HTTP组合任务,如下载一个视频时,视频文件 + 字幕 + 视频截图,这3个文件都是属于这个视频的,他们需要使用同一个进度条来展示其进度。

  • FTP文件夹任务,使用一个FTP文件夹地址,将该地址下的所有文件和其子文件夹中的所有文件下载下来,保存到本地。

特殊任务

特殊任务主要有两种:

  • m3u8 点播任务,m3u8文件分为所有文件和切片文件,一个索引文件对应多个切片文件,m3u8的下载地址为索引文件的地址,需要根据索引文件才可以获取到多个切片文件的下载地址。

  • m3u8 直播任务,和m3u8点播任务类似,唯一不同的是,m3u8直播任务没有恢复任务的操作,每次停止,再重新开始便是一个新任务。

任务队列说明

任务队列说明

在Aria中,所有的上传\下载操作都是一个任务,用户添加的任务时,Aria首先都会进入到cache_queue中:

  • 如果run_queue没满,则会马上执行该任务
  • 如果run_queue已满,aria会回调onWait方法

当任务完成、停止、失败,run_queue将会将任务出队,并回调相应的方法,然后从cache_queue中提取等待中的任务执行。

同时可以通过配置最大任务数控制执行任务大小,比如:最大任务数设置为2,但是用户连续下载4个文件,那么框架只会同时下载2个任务,剩下的两个任务将进入缓存队列,当其他运行中的任务完成、停止、删除时,自动执行下载。

队列效果如下:

队列效果

任务的生命周期

生命周期

如上图所示,每一个任务都有自己的生命周期,任务处于生命周期不同的阶段回调对应的方法。

常用api

  • 获取当前进度

      // 未转换单位的进度,单位:byte
      long progress = task.getCurrentProgress();
      // 转换单位的进度,单位: kb, mb
      String progress = task.getConvertCurrentProgress()
    
  • 获取速度

      // 未转换单位的速度,单位:byte/s
      long speed = task.getSpeed();
      //  转换单位的速度,单位: kb/s, mb/s
      long speed = task.getConvertSpeed();
    
  • 获取剩余时间

      /**
      * 获取剩余时间,单位:s
      * 如果是m3u8任务,无法获取剩余时间;m2u8任务如果需要获取剩余时间,请设置文件长度{@link AbsEntity#setFileSize(long)}
      */
      int timeLeft = task.getTimeLeft();
    
      /**
      * 转换时间
      * 时间<1 小时,显示分秒,显示样式 00:20
      * 时间 ≥1 小时,显示时分秒,显示样式 01:11:12
      * 时间 ≥1 天,显示天时分,显示样式 1d 01:11
      * 时间 ≥7 天,显示样式 ∞
      */
      String timeLeft = task.getConvertTimeLeft();
    
  • 获取当前任务百分比

      int p = task.getPercent();
    
  • 获取文件长度

      // 未转换单位的文件长度,单位:byte
      long fileSize = task.getFileSize();
      // 转换单位的文件长度,单位:kb, mb, gb
      long fileSize = task.getConvertFileSize();
    
  • 获取任务状态

      int state = task.getState();
    
Copyright © 2018 laoyuyu. | 蜀ICP备17031160号.            更新时间: 2020-01-09

results matching ""

    No results matching ""