增加获取执行中的任务api
增加获取剩余时间的api 修复重构loader导致的m3u8问题
This commit is contained in:
@@ -36,6 +36,8 @@ import com.arialyy.aria.core.download.target.HttpNormalTarget;
|
||||
import com.arialyy.aria.core.event.EventMsgUtil;
|
||||
import com.arialyy.aria.core.inf.AbsReceiver;
|
||||
import com.arialyy.aria.core.inf.ReceiverType;
|
||||
import com.arialyy.aria.core.queue.DGroupTaskQueue;
|
||||
import com.arialyy.aria.core.queue.DTaskQueue;
|
||||
import com.arialyy.aria.core.scheduler.TaskSchedulers;
|
||||
import com.arialyy.aria.core.task.ITask;
|
||||
import com.arialyy.aria.orm.DbEntity;
|
||||
@@ -302,6 +304,24 @@ public class DownloadReceiver extends AbsReceiver {
|
||||
return DbDataHelper.getDGEntityByHash(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取执行中的任务
|
||||
*
|
||||
* @return 没有执行中的任务,返回null
|
||||
*/
|
||||
public List<DownloadEntity> getDRunningTask() {
|
||||
return DTaskQueue.getInstance().getRunningTask(DownloadEntity.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取执行中的任务
|
||||
*
|
||||
* @return 没有执行中的任务,返回null
|
||||
*/
|
||||
public List<DownloadGroupEntity> getDGRunningTask() {
|
||||
return DGroupTaskQueue.getInstance().getRunningTask(DownloadGroupEntity.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载任务是否存在
|
||||
*
|
||||
|
||||
@@ -17,8 +17,10 @@ package com.arialyy.aria.core.download.target;
|
||||
|
||||
import com.arialyy.aria.core.common.AbsNormalTarget;
|
||||
import com.arialyy.aria.core.common.HttpOption;
|
||||
import com.arialyy.aria.core.download.DGTaskWrapper;
|
||||
import com.arialyy.aria.core.manager.SubTaskManager;
|
||||
import com.arialyy.aria.core.wrapper.ITaskWrapper;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -101,6 +103,37 @@ public class GroupNormalTarget extends AbsNormalTarget<GroupNormalTarget> {
|
||||
return mConfigHandler.setSubFileName(subTaskFileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果无法获取到组合任务到总长度,请调用该方法,
|
||||
* 请注意:
|
||||
* 1、如果组合任务到子任务数过多,请不要使用该标志位,否则Aria将需要消耗大量的时间获取组合任务的总长度,直到获取完成组合任务总长度后才会执行下载。
|
||||
* 2、如果你的知道组合任务的总长度,请使用{@link #setFileSize(long)}设置组合任务的长度。
|
||||
* 3、由于网络或其它原因的存在,这种方式获取的组合任务大小有可能是不准确的。
|
||||
*/
|
||||
public GroupNormalTarget unknownSize() {
|
||||
((DGTaskWrapper) getTaskWrapper()).setUnknownSize(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务组总任务大小,任务组是一个抽象的概念,没有真实的数据实体,任务组的大小是Aria动态获取子任务大小相加而得到的,
|
||||
* 如果你知道当前任务组总大小,你也可以调用该方法给任务组设置大小
|
||||
*
|
||||
* 为了更好的用户体验,组合任务最好设置文件大小,默认需要强制设置文件大小。如果无法获取到总长度,请调用{@link #unknownSize()}
|
||||
*
|
||||
* @param fileSize 任务组总大小
|
||||
*/
|
||||
public GroupNormalTarget setFileSize(long fileSize) {
|
||||
if (fileSize <= 0) {
|
||||
ALog.e(TAG, "文件大小不能小于 0");
|
||||
return this;
|
||||
}
|
||||
if (getEntity().getFileSize() <= 1 || getEntity().getFileSize() != fileSize) {
|
||||
getEntity().setFileSize(fileSize);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override public boolean isRunning() {
|
||||
return mConfigHandler.isRunning();
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.arialyy.aria.core.queue;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import com.arialyy.aria.core.common.AbsEntity;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.inf.TaskSchedulerType;
|
||||
import com.arialyy.aria.core.manager.TaskWrapperManager;
|
||||
@@ -31,6 +33,8 @@ import com.arialyy.aria.core.task.DownloadTask;
|
||||
import com.arialyy.aria.core.task.UploadTask;
|
||||
import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by lyy on 2017/2/23. 任务队列
|
||||
@@ -64,7 +68,33 @@ public abstract class AbsTaskQueue<TASK extends AbsTask, TASK_WRAPPER extends Ab
|
||||
|
||||
abstract int getQueueType();
|
||||
|
||||
/**
|
||||
* 获取执行中的任务
|
||||
*
|
||||
* @return 没有执行中的任务,返回null
|
||||
*/
|
||||
public <T extends AbsEntity> List<T> getRunningTask(Class<T> type) {
|
||||
List<TASK> exeTask = mExecutePool.getAllTask();
|
||||
List<TASK> cacheTask = mCachePool.getAllTask();
|
||||
List<T> entities = new ArrayList<>();
|
||||
if (exeTask != null && !exeTask.isEmpty()) {
|
||||
for (TASK task : exeTask) {
|
||||
entities.add((T) task.getTaskWrapper().getEntity());
|
||||
}
|
||||
}
|
||||
if (cacheTask != null && !cacheTask.isEmpty()) {
|
||||
for (TASK task : cacheTask) {
|
||||
entities.add((T) task.getTaskWrapper().getEntity());
|
||||
}
|
||||
}
|
||||
return entities.isEmpty() ? null : entities;
|
||||
}
|
||||
|
||||
@Override public boolean taskIsRunning(String key) {
|
||||
if (TextUtils.isEmpty(key)) {
|
||||
ALog.w(TAG, "key为空,无法确认任务是否执行");
|
||||
return false;
|
||||
}
|
||||
TASK task = mExecutePool.getTask(key);
|
||||
if (task == null && ThreadTaskManager.getInstance().taskIsRunning(key)) {
|
||||
ThreadTaskManager.getInstance().removeTaskThread(key);
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.arialyy.aria.core.queue;
|
||||
|
||||
import com.arialyy.aria.core.AriaConfig;
|
||||
import com.arialyy.aria.core.download.DTaskWrapper;
|
||||
import com.arialyy.aria.core.download.DownloadEntity;
|
||||
import com.arialyy.aria.core.event.DMaxNumEvent;
|
||||
import com.arialyy.aria.core.event.Event;
|
||||
import com.arialyy.aria.core.event.EventMsgUtil;
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.arialyy.aria.core.common.ProxyHelper;
|
||||
import com.arialyy.aria.core.event.EventMsgUtil;
|
||||
import com.arialyy.aria.core.inf.AbsReceiver;
|
||||
import com.arialyy.aria.core.inf.ReceiverType;
|
||||
import com.arialyy.aria.core.queue.UTaskQueue;
|
||||
import com.arialyy.aria.core.scheduler.TaskSchedulers;
|
||||
import com.arialyy.aria.core.task.ITask;
|
||||
import com.arialyy.aria.core.upload.target.FtpBuilderTarget;
|
||||
@@ -230,6 +231,15 @@ public class UploadReceiver extends AbsReceiver {
|
||||
ITask.UPLOAD));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取执行中的任务
|
||||
*
|
||||
* @return 没有执行中的任务,返回null
|
||||
*/
|
||||
public List<UploadEntity> getURunningTask() {
|
||||
return UTaskQueue.getInstance().getRunningTask(UploadEntity.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除所有任务
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user