修复重构loader模块后出现的组合任务的bug

This commit is contained in:
laoyuyu
2020-01-02 21:04:44 +08:00
parent 102d3ba0f6
commit c39bfbdd88
29 changed files with 390 additions and 262 deletions

View File

@@ -66,7 +66,7 @@ public final class HttpDGInfoTask implements IInfoTask {
}
};
public HttpDGInfoTask(DGTaskWrapper wrapper, DownloadGroupListener listener) {
HttpDGInfoTask(DGTaskWrapper wrapper, DownloadGroupListener listener) {
this.wrapper = wrapper;
this.listener = listener;
}
@@ -76,7 +76,7 @@ public final class HttpDGInfoTask implements IInfoTask {
if (mPool != null && !getLenComplete) {
ALog.d(TAG, "获取长度未完成的情况下,停止组合任务");
mPool.shutdown();
//mListener.onStop(0);
listener.onStop(0);
return;
}
// 处理组合任务大小未知的情况

View File

@@ -22,7 +22,7 @@ import com.arialyy.aria.core.download.DTaskWrapper;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.group.AbsGroupLoader;
import com.arialyy.aria.core.group.AbsSubDLoadUtil;
import com.arialyy.aria.core.listener.IEventListener;
import com.arialyy.aria.core.listener.DownloadGroupListener;
import com.arialyy.aria.core.loader.IInfoTask;
import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
import com.arialyy.aria.exception.BaseException;
@@ -31,7 +31,7 @@ import com.arialyy.aria.exception.BaseException;
* http 组合任务加载器
*/
final class HttpDGLoader extends AbsGroupLoader {
HttpDGLoader(AbsTaskWrapper groupWrapper, IEventListener listener) {
HttpDGLoader(AbsTaskWrapper groupWrapper, DownloadGroupListener listener) {
super(groupWrapper, listener);
}
@@ -44,13 +44,14 @@ final class HttpDGLoader extends AbsGroupLoader {
@Override
protected AbsSubDLoadUtil createSubLoader(DTaskWrapper wrapper, boolean needGetFileInfo) {
return new HttpSubDLoaderUtil(wrapper, getScheduler(), needGetFileInfo);
return new HttpSubDLoaderUtil(wrapper, getScheduler(), needGetFileInfo, getKey());
}
private void startSub() {
if (isBreak()) {
return;
}
onPostStart();
for (DTaskWrapper wrapper : getWrapper().getSubTaskWrapper()) {
DownloadEntity dEntity = wrapper.getEntity();
startSubLoader(createSubLoader(wrapper, dEntity.getFileSize() < 0));
@@ -65,7 +66,7 @@ final class HttpDGLoader extends AbsGroupLoader {
}
@Override public void onFail(AbsEntity entity, BaseException e, boolean needRetry) {
mListener.onFail(needRetry, e);
getListener().onFail(needRetry, e);
}
});
}

View File

@@ -36,7 +36,8 @@ public final class HttpDGLoaderUtil extends AbsGroupLoaderUtil {
}
@Override protected AbsGroupLoader getLoader() {
return mLoader == null ? new HttpDGLoader(getTaskWrapper(), getListener()) : mLoader;
return mLoader == null ? new HttpDGLoader(getTaskWrapper(),
(DownloadGroupListener) getListener()) : mLoader;
}
@Override protected LoaderStructure buildLoaderStructure() {

View File

@@ -32,14 +32,16 @@ final class HttpSubDLoaderUtil extends AbsSubDLoadUtil {
* @param schedulers 调度器
* @param needGetInfo {@code true} 需要获取文件信息。{@code false} 不需要获取文件信息
*/
HttpSubDLoaderUtil(DTaskWrapper taskWrapper, Handler schedulers, boolean needGetInfo) {
super(taskWrapper, schedulers, needGetInfo);
HttpSubDLoaderUtil(DTaskWrapper taskWrapper, Handler schedulers, boolean needGetInfo,
String parentKey) {
super(taskWrapper, schedulers, needGetInfo, parentKey);
}
@Override protected SubLoader getLoader() {
if (mDLoader == null) {
mDLoader = new SubLoader(getWrapper(), getSchedulers());
mDLoader.setNeedGetInfo(isNeedGetInfo());
mDLoader.setParentKey(getParentKey());
}
return mDLoader;
}