Aria参数配置

在Aria中,可以使用配置文件或调用代码的方式自定义下载方式、参数等配置。

一、使用配置文件设置参数

创建aria_config.xml 文件,将其放在assets目录下

<?xml version="1.0" encoding="utf-8"?>
<aria>
  <!--注意,修改该配置文件中的属性会覆盖代码中所设置的属性-->

  <!--Aria框架配置-->
  <app>
    <!--是否使用AriaCrashHandler来捕获异常,异常日志保存在:/mnt/sdcard/Android/data/{package_name}/files/log/-->
    <useAriaCrashHandler value="true"/>
    <!--设置Aria的日志级别,{@link ALog#LOG_LEVEL_VERBOSE}-->
    <logLevel value="2"/>
    <!-- 是否检查网络 true: 检查网络,false: 不检查网络-->
    <netCheck value="false"/>
    <!--除非无法使用注解,否则不建议使用广播来接受任务状态,true:使用广播接收任务状态,false:不适用广播接收状态 -->
    <!-- http://aria.laoyuyu.me/aria_doc/api/use_broadcast.html -->
    <useBroadcast value="true"/>
    <!--断网的时候是否重试,true:断网也重试;false:断网不重试,直接走失败的回调-->
    <notNetRetry value="true"/>
  </app>


  <!--普通下载任务-->
  <download>

    <!--设置任务最大下载速度,0表示不限速,单位为:kb-->
    <maxSpeed value="128"/>

    <!--
      多线程下载是否使用块下载模式,{@code true}使用,{@code false}不使用
      注意:
        1、使用分块模式,在I/O性能底下的手机上,合并文件需要的时间会更加长;
        2、优点是使用多线程的块下载,初始化时,文件初始化时将不会预占用对应长度的空间;
        3、只对新的多线程下载任务有效
        4、只对多线程的任务有效
    -->
    <useBlock value="true"/>

    <!--设置下载线程数,下载线程数不能小于1
      注意:
      1、线程下载数改变后,新的下载任务才会生效;
      2、如果任务大小小于1m,该设置不会生效;
      3、从3.4.1开始,如果线程数为1,文件初始化时将不再预占用对应长度的空间,下载多少byte,则占多大的空间;
         对于3.4.1之前版本的未完成的老任务,依然采用原来的文件空间占用方式;
    -->
    <threadNum value="1"/>

    <!--设置下载队列最大任务数, 默认为2-->
    <maxTaskNum value="1"/>

    <!--设置下载失败,重试次数,默认为10-->
    <reTryNum value="1"/>

    <!--设置重试间隔,单位为毫秒,默认2000毫秒-->
    <reTryInterval value="5000"/>

    <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
    <connectTimeOut value="5000"/>

    <!--设置IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒-->
    <iOTimeOut value="10000"/>

    <!--设置写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢-->
    <buffSize value="8192"/>

    <!--设置https ca 证书信息;path 为assets目录下的CA证书完整路径,name 为CA证书名-->
    <ca name="" path=""/>

    <!--是否需要转换速度单位,转换完成后为:1b/s、1kb/s、1mb/s、1gb/s、1tb/s,如果不需要将返回byte长度-->
    <convertSpeed value="true"/>

    <!--执行队列类型,见com.arialyy.aria.core.QueueMod,默认类型为wait-->
    <queueMod value="wait"/>

    <!--进度更新更新间隔,默认1000毫秒-->
    <updateInterval value="1000"/>

  </download>

  <!--普通上传任务-->
  <upload>
    <!--设置任务最大上传速度,0表示不限速,单位为:kb-->
    <maxSpeed value="0"/>

    <!--设置IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒-->
    <iOTimeOut value="10000"/>

    <!--设置写文件buff大小,该数值大小不能小于2048,数值变小,速度会变慢-->
    <buffSize value="8192"/>

    <!--是否需要转换速度单位,转换完成后为:1b/s、1kb/s、1mb/s、1gb/s、1tb/s,如果不需要将返回byte长度-->
    <convertSpeed value="true"/>

    <!--设置上传队列最大任务数, 默认为2-->
    <maxTaskNum value="2"/>

    <!--设置上传失败,重试次数,默认为10-->
    <reTryNum value="3"/>

    <!--设置重试间隔,单位为毫秒-->
    <reTryInterval value="2000"/>

    <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
    <connectTimeOut value="5000"/>

    <!--执行队列类型,见com.arialyy.aria.core.QueueMod,默认类型为wait-->
    <queueMod value="wait"/>

    <!--进度更新更新间隔,默认1000毫秒-->
    <updateInterval value="1000"/>

  </upload>

  <!-- 下载类组合任务 -->
  <dGroup>

    <!--组合任务下载队列最大任务数, 默认为2-->
    <maxTaskNum value="1"/>

    <!--设置下载失败,重试次数,默认为10-->
    <reTryNum value="1"/>

    <!--设置重试间隔,单位为毫秒,默认2000毫秒-->
    <reTryInterval value="5000"/>

    <!--执行队列类型,见com.arialyy.aria.core.QueueMod,默认类型为wait-->
    <queueMod value="wait"/>

    <!--进度更新更新间隔,默认1000毫秒-->
    <updateInterval value="1000"/>


    <!-- =============================以下为子任务的配置====================================-->

    <!--能同时下载的子任务最大任务数,默认3-->
    <subMaxTaskNum value="1"/>

    <!--子任务下载失败时的重试次数,默认为5-->
    <subReTryNum value="5"/>

    <!--子任务下载失败时的重试间隔,单位为毫秒,默认2000毫秒-->
    <subReTryInterval value="5000"/>

    <!--子任务url连接超时时间,单位为毫秒,默认5000毫秒-->
    <connectTimeOut value="5000"/>

    <!--子任务IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒-->
    <iOTimeOut value="10000"/>

    <!--子任务写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢-->
    <buffSize value="8192"/>

    <!--子任务 https ca 证书信息;path 为assets目录下的CA证书完整路径,name 为CA证书名-->
    <ca name="" path=""/>

    <!--子任务是否需要转换速度单位,转换完成后为:1b/s、1kb/s、1mb/s、1gb/s、1tb/s,如果不需要将返回byte长度-->
    <convertSpeed value="true"/>

    <!--子任务的最大下载速度,0表示不限速,单位为:kb; -->
    <maxSpeed value="0"/>

  </dGroup>
</aria>

二、代码中设置参数

除了文件方式外修改Aria参数外,同样的,你也可以在代码中动态修改Aria参数
通过Aria.get(this).getDownloadConfig()Aria.get(this).getUploadConfig()直接获取配置文件,然后修改参数
如以下所示:

// 修改最大下载数,调用完成后,立即生效
// 如当前下载任务数是4,修改完成后,当前任务数会被Aria自动调度任务数
Aria.get(this).getDownloadConfig().setMaxTaskNum(3);

三、一些参数说明

3.1、执行队列类型

  • wait模式 队列模式为等待模式。
    当正在执行的任务数已经达到队列设置的最大任务数时,继续下载新任务,Aria则会把新任务缓存到缓存队列中
  • now模式 队列模式为优先下载模式。
    当正在执行的任务数已经达到队列设置的最大任务数时,继续下载新任务,Aria会停止执行队列中的队首任务,新任务会立刻下载

3.2、设置最大任务数说明(Wait模式下的说明)

  • 如果你在下载任务中最大任务数设置为3

    • 当你连续下载的任务数小于3,任务会自动执行
    • 当正在执行的任务有3个时,如果你继续开始新任务,Aria则会将新任务存放在缓存队列中
    • 当正在执行的任务数有3个时,并且缓存队列中有1个任务,这时,如果你调用setMaxTaskNum(4);接口将最大任务数设置为4,则Aria会自动执行缓存队列中的任务,直到正在执行的任务数达到最大任务数为止
    • 如果正在执行的任务数有3个,这时,如果你调用setMaxTaskNum(2);接口将最大任务数设置为2,那么Aria会自动停止正在执行的队列中的第一个任务。
  • 在Aria中,上传任务和下载任务的最大任务数相互独立,互不影响的。 如:在上传类型的任务中,设置的最大的上传任务数为2,同时设置的最大下载任务为4。那么在下载队列中连续打开4个任务也不会暂停任何一个上传任务。

3.3、下载动态文件说明

开启动态文件后初始化时将不占用磁盘空间,下载多少byte,占多少空间,如下图所示,源文件长度为284M

task_running

开启动态长度后:

open

实际下载多少,才占用的内存空间。

注意:
1、使用该功能,将自动关闭多线程下载;
2、对于已经采用了多线程的任务,依然采用原来的下载方式;
3、原本参数是true,任务没下载完成,就参数改为false,那么没下载完成的任务还是会按照参数修改前的方式下载;只有新任务才会根据参数调用不同的下载方式。

Copyright © 2018 laoyuyu. | 蜀ICP备17031160号.            更新时间: 2019-10-24

results matching ""

    No results matching ""