From 41088dfa237558ca5b87137491df5949d3f825cf Mon Sep 17 00:00:00 2001 From: DaveBoy1994 Date: Thu, 5 Mar 2020 14:00:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=84=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=B8=AD=E5=8D=95=E4=B8=AA=E4=BB=BB=E5=8A=A1=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=90=8E=EF=BC=8C=E6=9C=80=E7=BB=88=E7=BB=84?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=9B=9E=E8=B0=83stop/fail=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arialyy/aria/core/config/DGroupConfig.java | 15 +++++++++++++++ .../com/arialyy/aria/core/config/XMLReader.java | 4 ++++ .../arialyy/aria/core/group/SimpleSchedulers.java | 3 +++ app/src/main/assets/aria_config.xml | 3 ++- 4 files changed, 24 insertions(+), 1 deletion(-) 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 @@ - + +