diff --git a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java index 25e9385c..0e062e03 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java +++ b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java @@ -38,44 +38,44 @@ public class DownloadSchedulers implements IDownloadSchedulers { /** * 任务预加载 */ - public static final int PRE = 0; + public static final int PRE = 0; /** * 任务开始 */ - public static final int START = 1; + public static final int START = 1; /** * 任务停止 */ - public static final int STOP = 2; + public static final int STOP = 2; /** * 任务失败 */ - public static final int FAIL = 3; + public static final int FAIL = 3; /** * 任务取消 */ - public static final int CANCEL = 4; + public static final int CANCEL = 4; /** * 任务完成 */ - public static final int COMPLETE = 5; + public static final int COMPLETE = 5; /** * 下载中 */ - public static final int RUNNING = 6; + public static final int RUNNING = 6; /** * 恢复下载 */ - public static final int RESUME = 7; - private static final String TAG = "DownloadSchedulers"; - private static final Object LOCK = new Object(); + public static final int RESUME = 7; + private static final String TAG = "DownloadSchedulers"; + private static final Object LOCK = new Object(); private static volatile DownloadSchedulers INSTANCE = null; /** * 下载器任务监听 */ Map mSchedulerListeners = new ConcurrentHashMap<>(); - DownloadManager mManager = DownloadManager.getInstance(); + DownloadManager mManager = DownloadManager.getInstance(); ITaskQueue mQueue; private DownloadSchedulers() { @@ -130,8 +130,7 @@ public class DownloadSchedulers implements IDownloadSchedulers { startNextTask(entity); break; case FAIL: - mQueue.removeTask(entity); - handleFailTask(entity); + handleFailTask(task); break; } return true; @@ -192,9 +191,9 @@ public class DownloadSchedulers implements IDownloadSchedulers { /** * 处理下载任务下载失败的情形 * - * @param entity 失败实体 + * @param task 下载任务 */ - @Override public void handleFailTask(final DownloadEntity entity) { + @Override public void handleFailTask(final Task task) { final Configuration config = Configuration.getInstance(); CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) { @Override public void onTick(long millisUntilFinished) { @@ -202,6 +201,7 @@ public class DownloadSchedulers implements IDownloadSchedulers { } @Override public void onFinish() { + DownloadEntity entity = task.getDownloadEntity(); if (entity.getFailNum() <= config.getReTryNum()) { Task task = mQueue.getTask(entity); mQueue.reTryStart(task); @@ -211,6 +211,7 @@ public class DownloadSchedulers implements IDownloadSchedulers { e.printStackTrace(); } } else { + mQueue.removeTask(entity); startNextTask(entity); } } diff --git a/Aria/src/main/java/com/arialyy/aria/core/scheduler/IDownloadSchedulers.java b/Aria/src/main/java/com/arialyy/aria/core/scheduler/IDownloadSchedulers.java index 5b38ceb5..3e75061f 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/scheduler/IDownloadSchedulers.java +++ b/Aria/src/main/java/com/arialyy/aria/core/scheduler/IDownloadSchedulers.java @@ -18,6 +18,7 @@ package com.arialyy.aria.core.scheduler; import android.os.Handler; import com.arialyy.aria.core.DownloadEntity; +import com.arialyy.aria.core.task.Task; /** * Created by “AriaLyy@outlook.com” on 2016/11/2. @@ -42,9 +43,9 @@ public interface IDownloadSchedulers extends Handler.Callback { /** * 处理下载任务下载失败的情形 * - * @param entity 下载实体 + * @param task 下载任务 */ - public void handleFailTask(DownloadEntity entity); + public void handleFailTask(Task task); /** * 启动下一个任务,条件:任务停止,取消下载,任务完成 diff --git a/Aria/src/main/java/com/arialyy/aria/util/Configuration.java b/Aria/src/main/java/com/arialyy/aria/util/Configuration.java index de3703d7..f3f4dd95 100644 --- a/Aria/src/main/java/com/arialyy/aria/util/Configuration.java +++ b/Aria/src/main/java/com/arialyy/aria/util/Configuration.java @@ -84,7 +84,7 @@ public class Configuration { private void init() { Map config = new WeakHashMap<>(); config.put(DOWNLOAD_NUM, 2 + ""); - config.put(RE_TRY_NUM, 10 + ""); + config.put(RE_TRY_NUM, 3 + ""); config.put(OPEN_BROADCAST, false + ""); config.put(RE_TRY_INTERVAL, 4000 + ""); config.put(DOWNLOAD_TIME_OUT, 10000 + "");