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; int subMaxTaskNum = 3;
/**
* 子任务失败时回调stop默认true
*/
private boolean subFailAsStop = true;
/** /**
* 子任务重试次数默认为5 * 子任务重试次数默认为5
*/ */
@ -118,4 +123,14 @@ public class DGroupConfig extends BaseTaskConfig implements Serializable {
save(); save();
return this; 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; int subMaxTaskNum = checkInt(value) ? Integer.parseInt(value) : 3;
setField("subMaxTaskNum", subMaxTaskNum, ConfigType.D_GROUP); setField("subMaxTaskNum", subMaxTaskNum, ConfigType.D_GROUP);
break; break;
case "subFailAsStop": // 子任务失败时回调stop
setField("subFailAsStop", checkBoolean(value) ? Boolean.valueOf(value) : false,
ConfigType.D_GROUP);
break;
case "subReTryNum": // 子任务重试次数 case "subReTryNum": // 子任务重试次数
int subReTryNum = checkInt(value) ? Integer.parseInt(value) : 5; int subReTryNum = checkInt(value) ? Integer.parseInt(value) : 5;
setField("subReTryNum", subReTryNum, ConfigType.D_GROUP); setField("subReTryNum", subReTryNum, ConfigType.D_GROUP);

@ -122,7 +122,7 @@ final class SimpleSchedulers implements Handler.Callback {
== mGState.getSubSize()) { == mGState.getSubSize()) {
mQueue.clear(); mQueue.clear();
mGState.isRunning.set(false); mGState.isRunning.set(false);
if (mGState.getCompleteNum() > 0) { if (mGState.getCompleteNum() > 0&&Configuration.getInstance().dGroupCfg.isSubFailAsStop()) {
ALog.e(TAG, String.format("任务组【%s】停止", mGState.getGroupHash())); ALog.e(TAG, String.format("任务组【%s】停止", mGState.getGroupHash()));
mGState.listener.onStop(mGState.getProgress()); mGState.listener.onStop(mGState.getProgress());
} else { } else {
@ -184,6 +184,9 @@ final class SimpleSchedulers implements Handler.Callback {
== mGState.getSubSize()) { == mGState.getSubSize()) {
if (mGState.getStopNum() == 0 && mGState.getFailNum() == 0) { if (mGState.getStopNum() == 0 && mGState.getFailNum() == 0) {
mGState.listener.onComplete(); 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 { } else {
mGState.listener.onStop(mGState.getProgress()); 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.ErrorHelp;
import com.arialyy.aria.util.RecordUtil; 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. 任务组下载事件 * Created by Aria.Lao on 2017/7/20. 任务组下载事件
*/ */
@ -85,6 +87,7 @@ public class DownloadGroupListener
handleSubSpeed(subEntity, 0); handleSubSpeed(subEntity, 0);
saveSubState(IEntity.STATE_FAIL, subEntity); saveSubState(IEntity.STATE_FAIL, subEntity);
saveCurrentLocation(); saveCurrentLocation();
mSeedEntity.groupTask.putExpand(ERROR_INFO_KEY,e);
sendInState2Target(ISchedulers.SUB_FAIL, subEntity); sendInState2Target(ISchedulers.SUB_FAIL, subEntity);
if (e != null) { if (e != null) {
e.printStackTrace(); e.printStackTrace();

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

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

Loading…
Cancel
Save