修复m3u8、http上传记录重复的问题

This commit is contained in:
laoyuyu
2019-10-09 20:16:58 +08:00
parent 75ff995d81
commit 9f673503c1
10 changed files with 68 additions and 18 deletions

View File

@@ -27,6 +27,9 @@ public abstract class AbsRecordHandlerAdapter implements IRecordHandlerAdapter {
private AbsTaskWrapper mWrapper;
protected String TAG = CommonUtil.getClassName(getClass());
@Override public void onPre() {
}
public AbsRecordHandlerAdapter(AbsTaskWrapper wrapper) {
mWrapper = wrapper;
}

View File

@@ -70,6 +70,7 @@ public class RecordHandler implements IRecordHandler {
if (mConfigFile.exists()) {
convertDb();
} else {
mAdapter.onPre();
mTaskRecord = DbDataHelper.getTaskRecord(getFilePath());
if (mTaskRecord == null) {
initRecord(true);

View File

@@ -26,6 +26,11 @@ import com.arialyy.aria.core.ThreadRecord;
*/
public interface IRecordHandlerAdapter {
/**
* 记录处理前的操作,可用来删除任务记录
*/
void onPre();
/**
* 处理任务记录
*/

View File

@@ -16,16 +16,16 @@
package com.arialyy.aria.util;
import android.text.TextUtils;
import com.arialyy.aria.core.inf.IRecordHandler;
import com.arialyy.aria.core.wrapper.RecordWrapper;
import com.arialyy.aria.core.TaskRecord;
import com.arialyy.aria.core.ThreadRecord;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.AbsNormalEntity;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadGroupEntity;
import com.arialyy.aria.core.download.M3U8Entity;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.AbsNormalEntity;
import com.arialyy.aria.core.inf.IRecordHandler;
import com.arialyy.aria.core.upload.UploadEntity;
import com.arialyy.aria.core.wrapper.RecordWrapper;
import com.arialyy.aria.orm.DbEntity;
import java.io.File;
import java.util.List;
@@ -148,13 +148,13 @@ public class RecordUtil {
* 处理任务未完成的情况
*/
if (!entity.isComplete()) {
if (record.taskType == TaskRecord.TYPE_M3U8_VOD) { // 删除ts分片文件
if (recordIsM3U8(record.taskType)) { // 删除ts分片文件
removeTsCache(targetFile, record.bandWidth);
} else if (record.isBlock) { // 删除分块文件
removeBlockFile(record);
}
} else if (removeFile) { // 处理任务完成情况
if (record.taskType == TaskRecord.TYPE_M3U8_VOD) {
if (recordIsM3U8(record.taskType)) {
removeTsCache(targetFile, record.bandWidth);
}
removeTargetFile(targetFile);
@@ -164,6 +164,16 @@ public class RecordUtil {
removeRecord(filePath);
}
/**
* 任务记录是否是m3u8记录
*
* @param recordType 任务记录类型
* @return true 为m3u8任务
*/
private static boolean recordIsM3U8(int recordType) {
return recordType == TaskRecord.TYPE_M3U8_VOD || recordType == TaskRecord.TYPE_M3U8_LIVE;
}
/**
* 删除任务记录,默认删除文件
*
@@ -208,13 +218,13 @@ public class RecordUtil {
* 处理任务未完成的情况
*/
if (!entity.isComplete()) {
if (record.taskType == TaskRecord.TYPE_M3U8_VOD) { // 删除ts分片文件
if (recordIsM3U8(record.taskType)) { // 删除ts分片文件
removeTsCache(targetFile, record.bandWidth);
} else if (record.isBlock) { // 删除分块文件
removeBlockFile(record);
}
} else if (removeFile) { // 处理任务完成情况
if (record.taskType == TaskRecord.TYPE_M3U8_VOD) {
if (recordIsM3U8(record.taskType)) {
removeTsCache(targetFile, record.bandWidth);
}
removeTargetFile(targetFile);
@@ -357,7 +367,8 @@ public class RecordUtil {
tr.taskKey = newPath;
File blockFile = new File(String.format(IRecordHandler.SUB_PATH, oldPath, tr.threadId));
if (blockFile.exists()) {
blockFile.renameTo(new File(String.format(IRecordHandler.SUB_PATH, newPath, tr.threadId)));
blockFile.renameTo(
new File(String.format(IRecordHandler.SUB_PATH, newPath, tr.threadId)));
}
}
DbEntity.updateManyData(record.threadRecords);