diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/config/DGroupConfig.java b/PublicComponent/src/main/java/com/arialyy/aria/core/config/DGroupConfig.java
index 17989d3c..c99ab3e9 100644
--- a/PublicComponent/src/main/java/com/arialyy/aria/core/config/DGroupConfig.java
+++ b/PublicComponent/src/main/java/com/arialyy/aria/core/config/DGroupConfig.java
@@ -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;
+ }
}
\ No newline at end of file
diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/config/XMLReader.java b/PublicComponent/src/main/java/com/arialyy/aria/core/config/XMLReader.java
index f4dfbd84..0e25c6f1 100644
--- a/PublicComponent/src/main/java/com/arialyy/aria/core/config/XMLReader.java
+++ b/PublicComponent/src/main/java/com/arialyy/aria/core/config/XMLReader.java
@@ -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);
diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/group/SimpleSchedulers.java b/PublicComponent/src/main/java/com/arialyy/aria/core/group/SimpleSchedulers.java
index a84d59f6..65e3782e 100644
--- a/PublicComponent/src/main/java/com/arialyy/aria/core/group/SimpleSchedulers.java
+++ b/PublicComponent/src/main/java/com/arialyy/aria/core/group/SimpleSchedulers.java
@@ -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());
}
diff --git a/app/src/main/assets/aria_config.xml b/app/src/main/assets/aria_config.xml
index 4f373352..111809df 100644
--- a/app/src/main/assets/aria_config.xml
+++ b/app/src/main/assets/aria_config.xml
@@ -126,7 +126,8 @@
-
+
+