Merge branch 'master' of github.com:AriaLyy/Aria

pull/709/head
laoyuyu 5 years ago
commit 0476c3a941
  1. 15
      PublicComponent/src/main/java/com/arialyy/aria/core/config/DGroupConfig.java
  2. 4
      PublicComponent/src/main/java/com/arialyy/aria/core/config/XMLReader.java
  3. 5
      PublicComponent/src/main/java/com/arialyy/aria/core/group/SimpleSchedulers.java
  4. 3
      PublicComponent/src/main/java/com/arialyy/aria/core/listener/DownloadGroupListener.java
  5. 2
      PublicComponent/src/main/java/com/arialyy/aria/util/DbDataHelper.java
  6. 3
      app/src/main/assets/aria_config.xml

@ -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;
}
}

@ -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);

@ -122,7 +122,7 @@ final class SimpleSchedulers implements Handler.Callback {
== mGState.getSubSize()) {
mQueue.clear();
mGState.isRunning.set(false);
if (mGState.getCompleteNum() > 0) {
if (mGState.getCompleteNum() > 0&&Configuration.getInstance().dGroupCfg.isSubFailAsStop()) {
ALog.e(TAG, String.format("任务组【%s】停止", mGState.getGroupHash()));
mGState.listener.onStop(mGState.getProgress());
} else {
@ -184,6 +184,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());
}

@ -30,6 +30,8 @@ import com.arialyy.aria.util.CommonUtil;
import com.arialyy.aria.util.ErrorHelp;
import com.arialyy.aria.util.RecordUtil;
import static com.arialyy.aria.core.task.AbsTask.ERROR_INFO_KEY;
/**
* Created by Aria.Lao on 2017/7/20. 任务组下载事件
*/
@ -85,6 +87,7 @@ public class DownloadGroupListener
handleSubSpeed(subEntity, 0);
saveSubState(IEntity.STATE_FAIL, subEntity);
saveCurrentLocation();
mSeedEntity.groupTask.putExpand(ERROR_INFO_KEY,e);
sendInState2Target(ISchedulers.SUB_FAIL, subEntity);
if (e != null) {
e.printStackTrace();

@ -107,8 +107,8 @@ public class DbDataHelper {
int lastIndex = url.lastIndexOf(File.separator);
//去除url末尾携带的的参数
int endIndex = url.lastIndexOf("?");
if(endIndex<0)endIndex=url.length();
if(endIndex<0||endIndex<lastIndex)endIndex=url.length();
entity.setFileName(url.substring(lastIndex + 1,endIndex));
entity.setGroupHash(groupHash);
entity.setGroupChild(true);

@ -126,7 +126,8 @@
<!--进度更新更新间隔,默认1000毫秒-->
<updateInterval value="1000"/>
<!--子任务失败时组任务回调stop,默认true false将回调fail-->
<subFailAsStop value="true"/>
<!-- =============================以下为子任务的配置====================================-->

Loading…
Cancel
Save