修复now模式下的一些问题 https://github.com/AriaLyy/Aria/issues/620
修复wait模式下,resume(true)无效问题
This commit is contained in:
@@ -29,7 +29,7 @@ import com.arialyy.aria.util.NetUtils;
|
||||
*/
|
||||
final public class StartCmd<T extends AbsTaskWrapper> extends AbsNormalCmd<T> {
|
||||
|
||||
private boolean newStart = false;
|
||||
private boolean nowStart = false;
|
||||
|
||||
StartCmd(T entity, int taskType) {
|
||||
super(entity, taskType);
|
||||
@@ -38,10 +38,10 @@ final public class StartCmd<T extends AbsTaskWrapper> extends AbsNormalCmd<T> {
|
||||
/**
|
||||
* 立即执行任务
|
||||
*
|
||||
* @param newStart true 立即执行任务,无论执行队列是否满了
|
||||
* @param nowStart true 立即执行任务,无论执行队列是否满了
|
||||
*/
|
||||
public void setNewStart(boolean newStart) {
|
||||
this.newStart = newStart;
|
||||
public void setNowStart(boolean nowStart) {
|
||||
this.nowStart = nowStart;
|
||||
}
|
||||
|
||||
@Override public void executeCmd() {
|
||||
@@ -82,7 +82,7 @@ final public class StartCmd<T extends AbsTaskWrapper> extends AbsNormalCmd<T> {
|
||||
startTask();
|
||||
}
|
||||
} else {
|
||||
if (newStart) {
|
||||
if (nowStart) {
|
||||
startTask();
|
||||
} else {
|
||||
sendWaitState(task);
|
||||
@@ -92,7 +92,19 @@ final public class StartCmd<T extends AbsTaskWrapper> extends AbsNormalCmd<T> {
|
||||
} else {
|
||||
//任务没执行并且执行队列中没有该任务,才认为任务没有运行中
|
||||
if (!mQueue.taskIsRunning(task.getKey())) {
|
||||
resumeTask();
|
||||
if (mod.equals(QueueMod.NOW.getTag())) {
|
||||
resumeTask();
|
||||
} else {
|
||||
if (mQueue.getCurrentExePoolNum() < maxTaskNum) {
|
||||
resumeTask();
|
||||
} else {
|
||||
if (nowStart) {
|
||||
resumeTask();
|
||||
} else {
|
||||
sendWaitState(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ALog.w(TAG, String.format("任务【%s】已经在运行", task.getTaskName()));
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public final class NormalController extends FeatureController implements INormal
|
||||
StartCmd cmd =
|
||||
(StartCmd) CmdHelper.createNormalCmd(getTaskWrapper(), NormalCmdFactory.TASK_START,
|
||||
checkTaskType());
|
||||
cmd.setNewStart(newStart);
|
||||
cmd.setNowStart(newStart);
|
||||
EventMsgUtil.getDefault()
|
||||
.post(cmd);
|
||||
}
|
||||
|
||||
@@ -113,6 +113,10 @@ public abstract class AbsTaskQueue<TASK extends AbsTask, TASK_WRAPPER extends Ab
|
||||
ALog.w(TAG, "resume task fail, task is null");
|
||||
return;
|
||||
}
|
||||
if (mExecutePool.taskExits(task.getKey())) {
|
||||
ALog.w(TAG, String.format("task【%s】running", task.getKey()));
|
||||
return;
|
||||
}
|
||||
if (mExecutePool.size() >= getMaxTaskNum()) {
|
||||
task.getTaskWrapper().getEntity().setState(IEntity.STATE_WAIT);
|
||||
mCachePool.putTaskToFirst(task);
|
||||
|
||||
Reference in New Issue
Block a user