修复下载失败重试不起作用的问题

This commit is contained in:
AriaLyy
2017-03-04 13:57:10 +08:00
parent c3fc725089
commit 5d3c0a2b91
7 changed files with 43 additions and 38 deletions

View File

@ -97,7 +97,6 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
boolean s = mExecuteQueue.offer(newTask);
Log.w(TAG, "任务添加" + (s ? "成功" : "失败,【" + url + ""));
if (s) {
newTask.start();
mExecuteArray.put(CommonUtil.keyToHashKey(url), newTask);
}
return s;
@ -114,7 +113,6 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
return false;
}
oldTask.stop();
// wait(200);
String key = CommonUtil.keyToHashKey(oldTask.getKey());
mExecuteArray.remove(key);
} catch (InterruptedException e) {

View File

@ -34,8 +34,8 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class DownloadSchedulers implements ISchedulers<DownloadTask> {
private static final String TAG = "DownloadSchedulers";
private static final Object LOCK = new Object();
private static final String TAG = "DownloadSchedulers";
private static final Object LOCK = new Object();
private static volatile DownloadSchedulers INSTANCE = null;
/**
@ -94,8 +94,8 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
startNextTask();
break;
case FAIL:
mQueue.removeTask(entity);
handleFailTask(entity);
//mQueue.removeTask(entity);
handleFailTask(task);
break;
}
return true;
@ -156,9 +156,9 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
/**
* 处理下载任务下载失败的情形
*
* @param entity 失败实体
* @param task 下载任务
*/
private void handleFailTask(final DownloadEntity entity) {
private void handleFailTask(final DownloadTask task) {
final Configuration config = Configuration.getInstance();
CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) {
@Override public void onTick(long millisUntilFinished) {
@ -166,7 +166,8 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
}
@Override public void onFinish() {
if (entity.getFailNum() <= config.getReTryNum()) {
DownloadEntity entity = task.getDownloadEntity();
if (entity.getFailNum() < config.getReTryNum()) {
DownloadTask task = mQueue.getTask(entity);
mQueue.reTryStart(task);
try {
@ -175,6 +176,7 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
e.printStackTrace();
}
} else {
mQueue.removeTask(entity);
startNextTask();
}
}

View File

@ -33,10 +33,12 @@ import java.util.concurrent.ConcurrentHashMap;
* 上传任务调度器
*/
public class UploadSchedulers implements ISchedulers<UploadTask> {
private static final String TAG = "UploadSchedulers";
private static final Object LOCK = new Object();
private static volatile UploadSchedulers INSTANCE = null;
private Map<String, OnSchedulerListener<UploadTask>> mSchedulerListeners =
private static final String TAG =
"UploadSchedulers";
private static final Object LOCK =
new Object();
private static volatile UploadSchedulers INSTANCE = null;
private Map<String, OnSchedulerListener<UploadTask>> mSchedulerListeners =
new ConcurrentHashMap<>();
private UploadTaskQueue mQueue;
@ -68,7 +70,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
}
}
private void handleFailTask(final UploadEntity entity) {
private void handleFailTask(final UploadTask task) {
final Configuration config = Configuration.getInstance();
CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) {
@Override public void onTick(long millisUntilFinished) {
@ -76,6 +78,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
}
@Override public void onFinish() {
UploadEntity entity = task.getUploadEntity();
if (entity.getFailNum() <= config.getReTryNum()) {
UploadTask task = mQueue.getTask(entity);
mQueue.reTryStart(task);
@ -85,6 +88,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
e.printStackTrace();
}
} else {
mQueue.removeTask(entity);
startNextTask();
}
}
@ -176,8 +180,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
startNextTask();
break;
case FAIL:
mQueue.removeTask(entity);
handleFailTask(entity);
handleFailTask(task);
break;
}
return true;

View File

@ -178,7 +178,7 @@ public class UploadUtil implements Runnable {
}
outputStream.flush();
outputStream.close();
//outputStream.close();
inputStream.close();
writer.append(LINE_END);
writer.flush();