修复下载失败重试不起作用的问题
This commit is contained in:
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -178,7 +178,7 @@ public class UploadUtil implements Runnable {
|
||||
}
|
||||
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
//outputStream.close();
|
||||
inputStream.close();
|
||||
writer.append(LINE_END);
|
||||
writer.flush();
|
||||
|
Reference in New Issue
Block a user