修复重构loader模块后出现的组合任务的bug
This commit is contained in:
@@ -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;
|
||||
}
|
||||
// 处理组合任务大小未知的情况
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user