FTP文件夹下载

要使用ftp文件下载功能,需要导入ftp组件

FTP文件夹下载,指的是通过FTP下载服务器上对应文件夹中的所有文件。效果如下:

组合任务效果

一、创建任务

long taskId = Aria.download(this)
                .loadFtpDir(dirUrl)         // ftp文件夹下载路径
        .setDirPath(dirPath)         // 文件夹保存路径
        .create();

1.1、设置FTP参数

如果你需要设置ftp相关参数,见FTP参数设置

1.2、覆盖路径

在某些情况下,你的文件保存路径可能已经被占用了,但是你只能使用这个路径保存文件,可以使用#setFilePath(filePath, true)接口强制使用该文件保存路径。

二、停止、恢复、删除任务

2.1、获取任务id

停止、恢复、删除任务需要使用任务id。获取任务id的方法有两种,详情见获取任务列表

2.2、停止任务

Aria.downlaod(this).loadFtpDir(taskId).stop();

2.3、恢复任务

Aria.download(this).loadFtpDir(taskId).resume();

Aria.download(this).LoadFtpDir(taskId).resume(true); // 立即进入执行队列

2.4、删除任务

Aria.download(this).loadFtpDir(taskId).cancel();

在下载完成的情况下,#cancel()方法只会删除记录,而不会删除已下载完成的文件,如果你希望在下载完成的情况下删除已下载完成的文件,可以是使用#cancel()的重载方法#cancel(true)

2.5 其他API

除了这些基本的任务控制外,你还可以查看任务控制文档。

三、子任务控制

有的时候,你可以需要手动控制组合任务中某个子任务的下载状态。对于这种需求,可以使用#getSubTaskManager()获取子任务管理器,然后通过子任务管理器控制子任务的停止、恢复功能。

3.1、启动组合任务中的一个子任务

Aria.download(this)
        .loadFtpDir(taskId)
        .getSubTaskManager()
        .startSubTask(subTaskUrl); // 子任务下载地址

3.2、 停止组合任务中的一个子任务

Aria.download(this)
    .loadFtpDir(taskId)
    .getSubTaskManager()
    .stopSubTask(subTaskUrl); // 子任务下载地址

四、任务状态监听

在Aria中,任务状态是通过java注解获取的。要获取任务状态,你只需要以下几个步骤便可。

1、在#onCreate()或其它位置注册Aria

Aria.download(this).register();

2、使用注解获取任务状态,如执行中、完成

/*
 * 任务执行中
 */
@DownloadGroup.onTaskRunning() 
protected void running(DownloadGroupTask task) {
    Log.d(TAG, "group running, p = "
        + task.getPercent()
        + ", speed = "
        + task.getConvertSpeed()
        + "current_p = "
        + task.getCurrentProgress());
    getBinding().setProgress(task.getPercent());
    getBinding().setSpeed(task.getConvertSpeed());
    mChildList.updateChildProgress(task.getEntity().getSubEntities());
  }

/*
 * 任务完成
 */
 @DownloadGroup.onTaskComplete() 
 protected void taskComplete(DownloadGroupTask task) {
    getBinding().setProgress(100);
    getBinding().setSpeed("");
    mChildList.updateChildProgress(task.getEntity().getSubEntities());
    T.showShort(this, "任务组下载完成");
    L.d(TAG, "任务组下载完成");
    getBinding().setStateStr(getString(R.string.start));
  }

3、子任务的事件获取

@DownloadGroup.onSubTaskRunning 
void onSubTaskRunning(DownloadGroupTask groupTask, DownloadEntity subEntity) {
    // 子任务执行中的回调   
}

@DownloadGroup.onSubTaskComplete 
void onSubTaskComplete(DownloadGroupTask groupTask, DownloadEntity subEntity) {
    // 子任务完成的回调
}

⚠️注意:如果你在非Activity或Fragment中注册了Aria,那么你需要在销毁对象时调用Aria.download(this).unRegister();取消注册,否则会出现内存泄漏的情况。

👉其它注解👈

Copyright © 2018 laoyuyu. | 蜀ICP备17031160号.            更新时间: 2020-01-17

results matching ""

    No results matching ""