修复bug
This commit is contained in:
@@ -217,14 +217,18 @@ public abstract class AbsGroupLoader implements ILoaderVisitor, ILoader {
|
||||
|
||||
@Override public void cancel() {
|
||||
isCancel = true;
|
||||
mInfoTask.cancel();
|
||||
if (mInfoTask != null){
|
||||
mInfoTask.cancel();
|
||||
}
|
||||
closeTimer();
|
||||
mSubQueue.removeAllTask();
|
||||
mListener.onCancel();
|
||||
}
|
||||
|
||||
@Override public void stop() {
|
||||
mInfoTask.stop();
|
||||
if (mInfoTask != null){
|
||||
mInfoTask.stop();
|
||||
}
|
||||
isStop = true;
|
||||
if (mSubQueue.getExecSize() == 0) {
|
||||
mListener.onStop(mGTWrapper.getEntity().getCurrentProgress());
|
||||
|
||||
@@ -229,7 +229,9 @@ public abstract class AbsNormalLoader<T extends AbsTaskWrapper> implements ILoad
|
||||
ALog.d(TAG, String.format("任务【%s】正在删除,删除任务失败", mTaskWrapper.getKey()));
|
||||
return;
|
||||
}
|
||||
mInfoTask.cancel();
|
||||
if (mInfoTask != null){
|
||||
mInfoTask.cancel();
|
||||
}
|
||||
closeTimer();
|
||||
isCancel = true;
|
||||
onCancel();
|
||||
@@ -263,7 +265,9 @@ public abstract class AbsNormalLoader<T extends AbsTaskWrapper> implements ILoad
|
||||
if (isStop) {
|
||||
return;
|
||||
}
|
||||
mInfoTask.stop();
|
||||
if (mInfoTask != null){
|
||||
mInfoTask.stop();
|
||||
}
|
||||
closeTimer();
|
||||
isStop = true;
|
||||
onStop();
|
||||
|
||||
@@ -182,6 +182,9 @@ public final class SubLoader implements ILoader, ILoaderVisitor {
|
||||
return;
|
||||
}
|
||||
isStop = true;
|
||||
if (infoTask != null){
|
||||
infoTask.stop();
|
||||
}
|
||||
for (IThreadTask iThreadTask : mTask) {
|
||||
iThreadTask.stop();
|
||||
}
|
||||
@@ -203,6 +206,9 @@ public final class SubLoader implements ILoader, ILoaderVisitor {
|
||||
return;
|
||||
}
|
||||
isCancel = true;
|
||||
if (infoTask != null){
|
||||
infoTask.cancel();
|
||||
}
|
||||
for (IThreadTask iThreadTask : mTask) {
|
||||
iThreadTask.cancel();
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver {
|
||||
File blockFile = mConfig.tempFile;
|
||||
if (!blockFile.exists() || blockFile.length() != mRecord.blockLen) {
|
||||
ALog.i(TAG,
|
||||
String.format("分块【%s】错误,blockFileLen: %s, threadRect: %s; 即将重新下载该分块,开始位置:%s,结束位置:%s",
|
||||
String.format("分块【%s】错误,blockFileLen: %s, threadRect: %s; 即将重新下载该分块, 开始位置:%s,结束位置:%s",
|
||||
blockFile.getName(), blockFile.length(), mRecord.blockLen, mRecord.startLocation,
|
||||
mRecord.endLocation));
|
||||
if (blockFile.exists()) {
|
||||
@@ -310,7 +310,8 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver {
|
||||
}
|
||||
|
||||
@Override public synchronized void updateCompleteState() {
|
||||
ALog.i(TAG, String.format("任务【%s】线程__%s__完成, blockSize = %s", getTaskWrapper().getKey(), mRecord.threadId, mConfig.tempFile.length()));
|
||||
ALog.i(TAG, String.format("任务【%s】线程__%s__完成, blockSize = %s", getTaskWrapper().getKey(),
|
||||
mRecord.threadId, mConfig.tempFile.length()));
|
||||
writeConfig(true, mRecord.endLocation);
|
||||
// 进度发送不是实时的,发送完成任务前,需要更新一次进度
|
||||
sendRunningState();
|
||||
@@ -420,7 +421,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver {
|
||||
* 重试ts分片
|
||||
*/
|
||||
private void retryM3U8Peer(boolean needRetry) {
|
||||
if (mConfig.ignoreFailure){
|
||||
if (mConfig.ignoreFailure) {
|
||||
ALog.d(TAG, "忽略失败的切片");
|
||||
sendFailMsg(null, false);
|
||||
return;
|
||||
@@ -431,9 +432,10 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver {
|
||||
sendFailMsg(null, false);
|
||||
return;
|
||||
}
|
||||
if (mFailTimes < RETRY_NUM && needRetry && (NetUtils.isConnected(
|
||||
AriaConfig.getInstance().getAPP())
|
||||
|| isNotNetRetry) && !isBreak()) {
|
||||
if (mFailTimes < RETRY_NUM
|
||||
&& needRetry
|
||||
&& (NetUtils.isConnected(AriaConfig.getInstance().getAPP()) || isNotNetRetry)
|
||||
&& !isBreak()) {
|
||||
ALog.w(TAG, String.format("ts切片【%s】第%s重试", getFileName(), String.valueOf(mFailTimes)));
|
||||
mFailTimes++;
|
||||
FileUtil.deleteFile(mConfig.tempFile);
|
||||
@@ -455,15 +457,19 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver {
|
||||
sendFailMsg(null, false);
|
||||
return;
|
||||
}
|
||||
if (mFailTimes < RETRY_NUM && needRetry && (NetUtils.isConnected(
|
||||
AriaConfig.getInstance().getAPP()) || isNotNetRetry) && !isBreak()) {
|
||||
if (mFailTimes < RETRY_NUM
|
||||
&& needRetry
|
||||
&& (NetUtils.isConnected(AriaConfig.getInstance().getAPP()) || isNotNetRetry)
|
||||
&& !isBreak()) {
|
||||
ALog.w(TAG, String.format("分块【%s】第%s次重试", getFileName(), String.valueOf(mFailTimes)));
|
||||
mFailTimes++;
|
||||
handleBlockRecord();
|
||||
ThreadTaskManager.getInstance().retryThread(this);
|
||||
return;
|
||||
}
|
||||
ALog.e(TAG, String.format("任务【%s】执行失败", getFileName()));
|
||||
ALog.e(TAG,
|
||||
String.format("重试分开【%s】失败,failTimes = %s, needRetry = %s, isBreak = %s",
|
||||
getFileName(), mFailTimes, needRetry, isBreak()));
|
||||
sendFailMsg(null, needRetry);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user