添加重置状态的api,当下载信息不改变,只是替换了服务器的对应的文件,可用Aria.download(this).load(url).resetState()重置下载状态
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.arialyy.aria.core.download;
|
||||
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.manager.TEManager;
|
||||
import com.arialyy.aria.core.queue.DownloadGroupTaskQueue;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
@@ -36,8 +37,7 @@ public class DownloadGroupTarget
|
||||
this.mUrls.addAll(groupEntity.getUrls());
|
||||
}
|
||||
mGroupName = CommonUtil.getMd5Code(groupEntity.getUrls());
|
||||
mTaskEntity = TEManager.getInstance()
|
||||
.getTEntity(DownloadGroupTaskEntity.class, mGroupName);
|
||||
mTaskEntity = TEManager.getInstance().getTEntity(DownloadGroupTaskEntity.class, mGroupName);
|
||||
if (mTaskEntity == null) {
|
||||
mTaskEntity =
|
||||
TEManager.getInstance().createTEntity(DownloadGroupTaskEntity.class, groupEntity);
|
||||
|
||||
@@ -84,7 +84,7 @@ public class DownloadReceiver extends AbsReceiver {
|
||||
* 加载Http、https单任务下载地址
|
||||
*
|
||||
* @param url 下载地址
|
||||
* @param refreshInfo 是否刷新下载信息
|
||||
* @param refreshInfo 是否刷新下载信息,当下载地址改变而保存路径不变,则需要设置该参数为{@code true}
|
||||
*/
|
||||
public DownloadTarget load(@NonNull String url, boolean refreshInfo) {
|
||||
CheckUtil.checkUrl(url);
|
||||
@@ -111,7 +111,7 @@ public class DownloadReceiver extends AbsReceiver {
|
||||
/**
|
||||
* 使用下载实体执行下载操作
|
||||
*
|
||||
* @param refreshInfo 是否刷新下载信息
|
||||
* @param refreshInfo 是否刷新下载信息,当下载地址改变而保存路径不变,则需要设置该参数为{@code true}
|
||||
*/
|
||||
public FtpDownloadTarget loadFtp(DownloadEntity entity, boolean refreshInfo) {
|
||||
CheckUtil.checkDownloadEntity(entity);
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.arialyy.aria.core.common.OnFileInfoCallback;
|
||||
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
|
||||
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
@@ -63,6 +64,11 @@ public class DownloadGroupUtil extends AbsGroupUtil implements IUtil {
|
||||
|
||||
@Override protected void onStart() {
|
||||
super.onStart();
|
||||
if (mExeMap.size() == 0){
|
||||
ALog.e(TAG, "任务组无可执行任务");
|
||||
mListener.onFail(false);
|
||||
return;
|
||||
}
|
||||
Set<String> keys = mExeMap.keySet();
|
||||
int i = 0;
|
||||
for (String key : keys) {
|
||||
|
||||
@@ -27,7 +27,7 @@ public abstract class AbsGroupTask<TASK_ENTITY extends AbsGroupTaskEntity>
|
||||
protected AbsGroupUtil mUtil;
|
||||
|
||||
@Override public String getKey() {
|
||||
return mTaskEntity.getEntity().getGroupName();
|
||||
return mTaskEntity.getEntity().getKey();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,6 +42,15 @@ public abstract class AbsTarget<TARGET extends AbsTarget, ENTITY extends AbsEnti
|
||||
protected TASK_ENTITY mTaskEntity;
|
||||
protected String mTargetName;
|
||||
|
||||
/**
|
||||
* 重置下载状态,将任务状态设置为未开始状态
|
||||
*/
|
||||
public TARGET resetState() {
|
||||
mTaskEntity.getEntity().setState(IEntity.STATE_WAIT);
|
||||
mTaskEntity.update();
|
||||
return (TARGET) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除记录,如果任务正在执行,则会删除正在下载的任务
|
||||
*/
|
||||
|
||||
@@ -184,6 +184,7 @@ public class TEManager {
|
||||
|
||||
/**
|
||||
* 通过key删除任务实体
|
||||
* 当任务complete或删除记录时将删除缓存
|
||||
*/
|
||||
public AbsTaskEntity removeTEntity(String key) {
|
||||
final Lock lock = this.lock;
|
||||
|
||||
@@ -332,8 +332,9 @@ final class SqlHelper extends SQLiteOpenHelper {
|
||||
List<Field> fields = CommonUtil.getAllFields(clazz);
|
||||
DbEntity cacheEntity = mDataCache.get(dbEntity.hashCode());
|
||||
if (fields != null && fields.size() > 0) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("UPDATE ").append(CommonUtil.getClassName(dbEntity)).append(" SET ");
|
||||
StringBuilder sql = new StringBuilder();
|
||||
StringBuilder prams = new StringBuilder();
|
||||
sql.append("UPDATE ").append(CommonUtil.getClassName(dbEntity)).append(" SET ");
|
||||
int i = 0;
|
||||
for (Field field : fields) {
|
||||
field.setAccessible(true);
|
||||
@@ -345,9 +346,11 @@ final class SqlHelper extends SQLiteOpenHelper {
|
||||
continue;
|
||||
}
|
||||
|
||||
sb.append(i > 0 ? ", " : "");
|
||||
//sb.append(i > 0 ? ", " : "");
|
||||
//sb.append(field.getName()).append("='");
|
||||
String value;
|
||||
sb.append(field.getName()).append("='");
|
||||
prams.append(i > 0 ? ", " : "");
|
||||
prams.append(field.getName()).append("='");
|
||||
Type type = field.getType();
|
||||
if (type == Map.class) {
|
||||
value = SqlUtil.map2Str((Map<String, String>) field.get(dbEntity));
|
||||
@@ -364,16 +367,21 @@ final class SqlHelper extends SQLiteOpenHelper {
|
||||
value = obj == null ? "" : obj.toString();
|
||||
}
|
||||
|
||||
sb.append(value == null ? "" : value);
|
||||
sb.append("'");
|
||||
//sb.append(value == null ? "" : value);
|
||||
//sb.append("'");
|
||||
prams.append(TextUtils.isEmpty(value) ? "" : value);
|
||||
prams.append("'");
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
i++;
|
||||
}
|
||||
sb.append(" where rowid=").append(dbEntity.rowID);
|
||||
print(MODIFY_DATA, sb.toString());
|
||||
db.execSQL(sb.toString());
|
||||
if (!TextUtils.isEmpty(prams.toString())) {
|
||||
sql.append(prams.toString());
|
||||
sql.append(" where rowid=").append(dbEntity.rowID);
|
||||
print(MODIFY_DATA, sql.toString());
|
||||
db.execSQL(sql.toString());
|
||||
}
|
||||
}
|
||||
close(db);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user