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();
取消注册,否则会出现内存泄漏的情况。
👉其它注解👈