增加组任务中单个任务下载失败后,最终组任务回调stop/fail设置

This commit is contained in:
DaveBoy1994
2020-03-05 14:00:28 +08:00
parent 14901d4c0c
commit 41088dfa23
4 changed files with 24 additions and 1 deletions

View File

@@ -31,6 +31,11 @@ public class DGroupConfig extends BaseTaskConfig implements Serializable {
*/
int subMaxTaskNum = 3;
/**
* 子任务失败时回调stop默认true
*/
private boolean subFailAsStop = true;
/**
* 子任务重试次数默认为5
*/
@@ -118,4 +123,14 @@ public class DGroupConfig extends BaseTaskConfig implements Serializable {
save();
return this;
}
public boolean isSubFailAsStop() {
return subFailAsStop;
}
public DGroupConfig setSubFailAsStop(boolean subFailAsStop) {
this.subFailAsStop = subFailAsStop;
save();
return this;
}
}

View File

@@ -144,6 +144,10 @@ public class XMLReader extends DefaultHandler {
int subMaxTaskNum = checkInt(value) ? Integer.parseInt(value) : 3;
setField("subMaxTaskNum", subMaxTaskNum, ConfigType.D_GROUP);
break;
case "subFailAsStop": // 子任务失败时回调stop
setField("subFailAsStop", checkBoolean(value) ? Boolean.valueOf(value) : false,
ConfigType.D_GROUP);
break;
case "subReTryNum": // 子任务重试次数
int subReTryNum = checkInt(value) ? Integer.parseInt(value) : 5;
setField("subReTryNum", subReTryNum, ConfigType.D_GROUP);

View File

@@ -179,6 +179,9 @@ final class SimpleSchedulers implements Handler.Callback {
== mGState.getSubSize()) {
if (mGState.getStopNum() == 0 && mGState.getFailNum() == 0) {
mGState.listener.onComplete();
} else if(mGState.getStopNum() == 0&&!Configuration.getInstance().dGroupCfg.isSubFailAsStop() ){
mGState.listener.onFail(false, new AriaException(TAG,
String.format("任务组【%s】下载失败", mGState.getGroupHash())));
} else {
mGState.listener.onStop(mGState.getProgress());
}