修复bug

This commit is contained in:
laoyuyu
2020-12-09 22:31:36 +08:00
parent 5853fe9e3e
commit 1c0765be02
5 changed files with 35 additions and 15 deletions

View File

@@ -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());

View File

@@ -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();

View File

@@ -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();
}

View File

@@ -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);
}