修复bug
This commit is contained in:
@ -32,7 +32,7 @@ import com.arialyy.aria.util.CommonUtil;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbsCmd<T extends AbsTaskEntity> implements ICmd {
|
public abstract class AbsCmd<T extends AbsTaskEntity> implements ICmd {
|
||||||
ITaskQueue mQueue;
|
ITaskQueue mQueue;
|
||||||
T mEntity;
|
T mTaskEntity;
|
||||||
String TAG;
|
String TAG;
|
||||||
String mTargetName;
|
String mTargetName;
|
||||||
/**
|
/**
|
||||||
@ -52,7 +52,7 @@ public abstract class AbsCmd<T extends AbsTaskEntity> implements ICmd {
|
|||||||
canExeCmd = CheckUtil.checkCmdEntity(entity,
|
canExeCmd = CheckUtil.checkCmdEntity(entity,
|
||||||
!(this instanceof CancelCmd) || !(this instanceof StopCmd));
|
!(this instanceof CancelCmd) || !(this instanceof StopCmd));
|
||||||
mTargetName = targetName;
|
mTargetName = targetName;
|
||||||
mEntity = entity;
|
mTaskEntity = entity;
|
||||||
TAG = CommonUtil.getClassName(this);
|
TAG = CommonUtil.getClassName(this);
|
||||||
if (entity instanceof DownloadTaskEntity) {
|
if (entity instanceof DownloadTaskEntity) {
|
||||||
mQueue = DownloadTaskQueue.getInstance();
|
mQueue = DownloadTaskQueue.getInstance();
|
||||||
|
@ -33,10 +33,10 @@ class AddCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
if (!canExeCmd) return;
|
if (!canExeCmd) return;
|
||||||
ITask task = mQueue.getTask(mEntity.getEntity());
|
ITask task = mQueue.getTask(mTaskEntity.getEntity());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
mEntity.getEntity().setState(IEntity.STATE_WAIT);
|
mTaskEntity.getEntity().setState(IEntity.STATE_WAIT);
|
||||||
mQueue.createTask(mTargetName, mEntity);
|
mQueue.createTask(mTargetName, mTaskEntity);
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "添加命令执行失败,【该任务已经存在】");
|
Log.w(TAG, "添加命令执行失败,【该任务已经存在】");
|
||||||
}
|
}
|
||||||
|
@ -31,15 +31,15 @@ class CancelCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
if (!canExeCmd) return;
|
if (!canExeCmd) return;
|
||||||
ITask task = mQueue.getTask(mEntity.getEntity());
|
ITask task = mQueue.getTask(mTaskEntity.getEntity());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mTaskEntity);
|
||||||
}
|
}
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
if (!TextUtils.isEmpty(mTargetName)) {
|
if (!TextUtils.isEmpty(mTargetName)) {
|
||||||
task.setTargetName(mTargetName);
|
task.setTargetName(mTargetName);
|
||||||
}
|
}
|
||||||
mQueue.cancelTask(task);
|
mQueue.removeTask(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,9 +39,9 @@ final class HighestPriorityCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
if (!canExeCmd) return;
|
if (!canExeCmd) return;
|
||||||
ITask task = mQueue.getTask(mEntity.getEntity());
|
ITask task = mQueue.getTask(mTaskEntity.getEntity());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mTaskEntity);
|
||||||
}
|
}
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
if (!TextUtils.isEmpty(mTargetName)) {
|
if (!TextUtils.isEmpty(mTargetName)) {
|
||||||
|
@ -27,7 +27,7 @@ final class ResumeAllCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
List<DownloadEntity> allEntity =
|
List<DownloadEntity> allEntity =
|
||||||
DbEntity.findDatas(DownloadEntity.class, "state=?", IEntity.STATE_STOP + "");
|
DbEntity.findDatas(DownloadEntity.class, "state=?", IEntity.STATE_STOP + "");
|
||||||
for (DownloadEntity entity : allEntity) {
|
for (DownloadEntity entity : allEntity) {
|
||||||
int exeNum = mQueue.getExeTaskNum();
|
int exeNum = mQueue.getExePoolSize();
|
||||||
if (exeNum == 0 || exeNum < mQueue.getMaxTaskNum()) {
|
if (exeNum == 0 || exeNum < mQueue.getMaxTaskNum()) {
|
||||||
ITask task = createTask(entity);
|
ITask task = createTask(entity);
|
||||||
mQueue.startTask(task);
|
mQueue.startTask(task);
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
package com.arialyy.aria.core.command;
|
package com.arialyy.aria.core.command;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.QueueMod;
|
import com.arialyy.aria.core.QueueMod;
|
||||||
import com.arialyy.aria.core.inf.ITask;
|
import com.arialyy.aria.core.inf.ITask;
|
||||||
@ -35,9 +34,9 @@ class StartCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
if (!canExeCmd) return;
|
if (!canExeCmd) return;
|
||||||
ITask task = mQueue.getTask(mEntity.getEntity());
|
ITask task = mQueue.getTask(mTaskEntity.getEntity());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mTaskEntity);
|
||||||
}
|
}
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
if (!TextUtils.isEmpty(mTargetName)) {
|
if (!TextUtils.isEmpty(mTargetName)) {
|
||||||
@ -56,7 +55,7 @@ class StartCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
if (mod.equals(QueueMod.NOW.getTag())) {
|
if (mod.equals(QueueMod.NOW.getTag())) {
|
||||||
mQueue.startTask(task);
|
mQueue.startTask(task);
|
||||||
}else if (mod.equals(QueueMod.WAIT.getTag())){
|
}else if (mod.equals(QueueMod.WAIT.getTag())){
|
||||||
if (mQueue.getExeTaskNum() < maxTaskNum){
|
if (mQueue.getExePoolSize() < maxTaskNum){
|
||||||
mQueue.startTask(task);
|
mQueue.startTask(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,10 +34,10 @@ class StopCmd<T extends AbsTaskEntity> extends AbsCmd<T> {
|
|||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
if (!canExeCmd) return;
|
if (!canExeCmd) return;
|
||||||
ITask task = mQueue.getTask(mEntity.getEntity());
|
ITask task = mQueue.getTask(mTaskEntity.getEntity());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
if (mEntity.getEntity().getState() == IEntity.STATE_RUNNING) {
|
if (mTaskEntity.getEntity().getState() == IEntity.STATE_RUNNING) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mTaskEntity);
|
||||||
mQueue.stopTask(task);
|
mQueue.stopTask(task);
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "停止命令执行失败,【调度器中没有该任务】");
|
Log.w(TAG, "停止命令执行失败,【调度器中没有该任务】");
|
||||||
|
@ -21,7 +21,6 @@ import android.util.Log;
|
|||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.util.BufferedRandomAccessFile;
|
import com.arialyy.aria.util.BufferedRandomAccessFile;
|
||||||
import com.arialyy.aria.util.CheckUtil;
|
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -371,6 +370,7 @@ class DownloadUtil implements IDownloadUtil, Runnable {
|
|||||||
new BufferedRandomAccessFile(new File(mDownloadFile.getPath()), "rwd", 8192);
|
new BufferedRandomAccessFile(new File(mDownloadFile.getPath()), "rwd", 8192);
|
||||||
//设置文件长度
|
//设置文件长度
|
||||||
file.setLength(fileLength);
|
file.setLength(fileLength);
|
||||||
|
file.close();
|
||||||
mListener.onPostPre(fileLength);
|
mListener.onPostPre(fileLength);
|
||||||
//分配每条线程的下载区间
|
//分配每条线程的下载区间
|
||||||
pro = CommonUtil.loadConfig(mConfigFile);
|
pro = CommonUtil.loadConfig(mConfigFile);
|
||||||
|
@ -76,8 +76,9 @@ final class SingleThreadTask implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
HttpURLConnection conn;
|
HttpURLConnection conn = null;
|
||||||
InputStream is;
|
InputStream is = null;
|
||||||
|
BufferedRandomAccessFile file = null;
|
||||||
try {
|
try {
|
||||||
URL url = new URL(mConfigEntity.DOWNLOAD_URL);
|
URL url = new URL(mConfigEntity.DOWNLOAD_URL);
|
||||||
conn = ConnectionHelp.handleConnection(url);
|
conn = ConnectionHelp.handleConnection(url);
|
||||||
@ -102,8 +103,7 @@ final class SingleThreadTask implements Runnable {
|
|||||||
conn.setReadTimeout(CONSTANCE.READ_TIME_OUT); //设置读取流的等待时间,必须设置该参数
|
conn.setReadTimeout(CONSTANCE.READ_TIME_OUT); //设置读取流的等待时间,必须设置该参数
|
||||||
is = conn.getInputStream();
|
is = conn.getInputStream();
|
||||||
//创建可设置位置的文件
|
//创建可设置位置的文件
|
||||||
BufferedRandomAccessFile file =
|
file = new BufferedRandomAccessFile(mConfigEntity.TEMP_FILE, "rwd", mBufSize);
|
||||||
new BufferedRandomAccessFile(mConfigEntity.TEMP_FILE, "rwd", mBufSize);
|
|
||||||
//设置每条线程写入文件的位置
|
//设置每条线程写入文件的位置
|
||||||
file.seek(mConfigEntity.START_LOCATION);
|
file.seek(mConfigEntity.START_LOCATION);
|
||||||
byte[] buffer = new byte[mBufSize];
|
byte[] buffer = new byte[mBufSize];
|
||||||
@ -121,10 +121,6 @@ final class SingleThreadTask implements Runnable {
|
|||||||
file.write(buffer, 0, len);
|
file.write(buffer, 0, len);
|
||||||
progress(len);
|
progress(len);
|
||||||
}
|
}
|
||||||
file.close();
|
|
||||||
//close 为阻塞的,需要使用线程池来处理
|
|
||||||
is.close();
|
|
||||||
conn.disconnect();
|
|
||||||
if (CONSTANCE.isCancel) {
|
if (CONSTANCE.isCancel) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -161,6 +157,20 @@ final class SingleThreadTask implements Runnable {
|
|||||||
failDownload(mChildCurrentLocation, "下载失败【" + mConfigEntity.DOWNLOAD_URL + "】", e);
|
failDownload(mChildCurrentLocation, "下载失败【" + mConfigEntity.DOWNLOAD_URL + "】", e);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
failDownload(mChildCurrentLocation, "获取流失败", e);
|
failDownload(mChildCurrentLocation, "获取流失败", e);
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (file != null) {
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
if (is != null) {
|
||||||
|
is.close();
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
conn.disconnect();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ public abstract class AbsTaskEntity {
|
|||||||
public RequestEnum requestEnum = RequestEnum.GET;
|
public RequestEnum requestEnum = RequestEnum.GET;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重定向后,新url的key
|
* 重定向后,从链接中获取新url所需要的key
|
||||||
*/
|
*/
|
||||||
public String redirectUrlKey = "location";
|
public String redirectUrlKey = "location";
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public interface IEntity {
|
|||||||
*/
|
*/
|
||||||
@Ignore public static final int STATE_STOP = 2;
|
@Ignore public static final int STATE_STOP = 2;
|
||||||
/**
|
/**
|
||||||
* 未开始状态
|
* 等待状态
|
||||||
*/
|
*/
|
||||||
@Ignore public static final int STATE_WAIT = 3;
|
@Ignore public static final int STATE_WAIT = 3;
|
||||||
/**
|
/**
|
||||||
|
@ -44,14 +44,14 @@ public interface ITask<ENTITY extends AbsEntity> {
|
|||||||
public String getKey();
|
public String getKey();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否真正执行
|
* 任务是否正在执行
|
||||||
*
|
*
|
||||||
* @return true,正在执行;
|
* @return true,正在执行;
|
||||||
*/
|
*/
|
||||||
public boolean isRunning();
|
public boolean isRunning();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取工具实体
|
* 获取信息实体
|
||||||
*/
|
*/
|
||||||
public ENTITY getEntity();
|
public ENTITY getEntity();
|
||||||
|
|
||||||
|
@ -78,16 +78,16 @@ abstract class AbsTaskQueue<TASK extends ITask, TASK_ENTITY extends AbsTaskEntit
|
|||||||
*
|
*
|
||||||
* @return 获取缓存的任务数
|
* @return 获取缓存的任务数
|
||||||
*/
|
*/
|
||||||
@Override public int cachePoolSize() {
|
@Override public int getCachePoolSize() {
|
||||||
return mCachePool.size();
|
return mCachePool.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前运行的任务数
|
* 获取执行池中的任务数量
|
||||||
*
|
*
|
||||||
* @return 当前正在执行的任务数
|
* @return 当前正在执行的任务数
|
||||||
*/
|
*/
|
||||||
@Override public int getExeTaskNum() {
|
@Override public int getExePoolSize() {
|
||||||
return mExecutePool.size();
|
return mExecutePool.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ abstract class AbsTaskQueue<TASK extends ITask, TASK_ENTITY extends AbsTaskEntit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void cancelTask(TASK task) {
|
@Override public void removeTask(TASK task) {
|
||||||
task.cancel();
|
task.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,9 @@ public class DownloadTaskQueue
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最大下载速度
|
||||||
|
*/
|
||||||
public void setMaxSpeed(double maxSpeed) {
|
public void setMaxSpeed(double maxSpeed) {
|
||||||
Map<String, DownloadTask> tasks = mExecutePool.getAllTask();
|
Map<String, DownloadTask> tasks = mExecutePool.getAllTask();
|
||||||
Set<String> keys = tasks.keySet();
|
Set<String> keys = tasks.keySet();
|
||||||
@ -116,7 +119,7 @@ public class DownloadTaskQueue
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mExecutePool.setDownloadNum(downloadNum);
|
mExecutePool.setMaxNum(downloadNum);
|
||||||
if (diff >= 1) {
|
if (diff >= 1) {
|
||||||
for (int i = 0; i < diff; i++) {
|
for (int i = 0; i < diff; i++) {
|
||||||
DownloadTask nextTask = getNextTask();
|
DownloadTask nextTask = getNextTask();
|
||||||
|
@ -67,11 +67,18 @@ public interface ITaskQueue<TASK extends ITask, TASK_ENTITY extends AbsTaskEntit
|
|||||||
void stopTask(TASK task);
|
void stopTask(TASK task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消任务
|
* 通过任务任务实体删除任务
|
||||||
*
|
*
|
||||||
* @param task {@link DownloadTask}、{@link UploadTask}
|
* @param task {@link DownloadTask}、{@link UploadTask}
|
||||||
*/
|
*/
|
||||||
void cancelTask(TASK task);
|
void removeTask(TASK task);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过工作实体删除任务
|
||||||
|
*
|
||||||
|
* @param entity 工作实体{@link DownloadEntity}、{@link UploadEntity}
|
||||||
|
*/
|
||||||
|
void removeTask(ENTITY entity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试下载
|
* 重试下载
|
||||||
@ -81,24 +88,24 @@ public interface ITaskQueue<TASK extends ITask, TASK_ENTITY extends AbsTaskEntit
|
|||||||
void reTryStart(TASK task);
|
void reTryStart(TASK task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取正在执行的任务数量
|
* 获取执行池中的任务数量
|
||||||
*/
|
*/
|
||||||
int getExeTaskNum();
|
int getExePoolSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务缓存池大小
|
* 获取任务缓存池中的任务数量
|
||||||
*/
|
*/
|
||||||
int cachePoolSize();
|
int getCachePoolSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置最大任务数
|
* 设置执行池可执行的最大任务数
|
||||||
*
|
*
|
||||||
* @param newMaxNum 最大任务数
|
* @param newMaxNum 最大任务数
|
||||||
*/
|
*/
|
||||||
void setMaxTaskNum(int newMaxNum);
|
void setMaxTaskNum(int newMaxNum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取可执行队列的大小
|
* 获取执行池可执行的最大任务数
|
||||||
*/
|
*/
|
||||||
int getMaxTaskNum();
|
int getMaxTaskNum();
|
||||||
|
|
||||||
@ -127,13 +134,6 @@ public interface ITaskQueue<TASK extends ITask, TASK_ENTITY extends AbsTaskEntit
|
|||||||
*/
|
*/
|
||||||
TASK getTask(String url);
|
TASK getTask(String url);
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过工作实体删除任务
|
|
||||||
*
|
|
||||||
* @param entity 工作实体{@link DownloadEntity}、{@link UploadEntity}
|
|
||||||
*/
|
|
||||||
void removeTask(ENTITY entity);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取缓存池的下一个任务
|
* 获取缓存池的下一个任务
|
||||||
*
|
*
|
||||||
|
@ -45,7 +45,7 @@ public class CachePool<TASK extends ITask> implements IPool<TASK> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有正在执行的任务
|
* 获取被缓存的任务
|
||||||
*/
|
*/
|
||||||
public Map<String, TASK> getAllTask() {
|
public Map<String, TASK> getAllTask() {
|
||||||
return mCacheMap;
|
return mCacheMap;
|
||||||
|
@ -83,19 +83,19 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置执行任务数
|
* 设置执行队列最大任务数
|
||||||
*
|
*
|
||||||
* @param downloadNum 下载数
|
* @param maxNum 下载数
|
||||||
*/
|
*/
|
||||||
public void setDownloadNum(int downloadNum) {
|
public void setMaxNum(int maxNum) {
|
||||||
try {
|
try {
|
||||||
ArrayBlockingQueue<TASK> temp = new ArrayBlockingQueue<>(downloadNum);
|
ArrayBlockingQueue<TASK> temp = new ArrayBlockingQueue<>(maxNum);
|
||||||
TASK task;
|
TASK task;
|
||||||
while ((task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS)) != null) {
|
while ((task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS)) != null) {
|
||||||
temp.offer(task);
|
temp.offer(task);
|
||||||
}
|
}
|
||||||
mExecuteQueue = temp;
|
mExecuteQueue = temp;
|
||||||
mSize = downloadNum;
|
mSize = maxNum;
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
|
|||||||
/**
|
/**
|
||||||
* 添加新任务
|
* 添加新任务
|
||||||
*
|
*
|
||||||
* @param newTask 新下载任务
|
* @param newTask 新任务
|
||||||
*/
|
*/
|
||||||
private boolean putNewTask(TASK newTask) {
|
private boolean putNewTask(TASK newTask) {
|
||||||
String url = newTask.getKey();
|
String url = newTask.getKey();
|
||||||
|
@ -52,17 +52,17 @@ public interface IPool<T extends ITask> {
|
|||||||
public boolean removeTask(T task);
|
public boolean removeTask(T task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过下载链接移除下载任务
|
* 通过key除下载任务
|
||||||
*
|
*
|
||||||
* @param downloadUrl 下载链接
|
* @param key 下载链接
|
||||||
* @return true:移除成功
|
* @return true:移除成功
|
||||||
*/
|
*/
|
||||||
public boolean removeTask(String downloadUrl);
|
public boolean removeTask(String key);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 池子大小
|
* 池子大小
|
||||||
*
|
*
|
||||||
* @return 返回缓存池或者当前任务池大小
|
* @return 返回缓存池或者执行池大小
|
||||||
*/
|
*/
|
||||||
public int size();
|
public int size();
|
||||||
}
|
}
|
@ -140,7 +140,7 @@ public abstract class AbsSchedulers<TASK_ENTITY extends AbsTaskEntity, ENTITY ex
|
|||||||
}
|
}
|
||||||
case CANCEL:
|
case CANCEL:
|
||||||
mQueue.removeTask(entity);
|
mQueue.removeTask(entity);
|
||||||
if (mQueue.getExeTaskNum() < AriaManager.getInstance(AriaManager.APP)
|
if (mQueue.getExePoolSize() < AriaManager.getInstance(AriaManager.APP)
|
||||||
.getUploadConfig()
|
.getUploadConfig()
|
||||||
.getMaxTaskNum()) {
|
.getMaxTaskNum()) {
|
||||||
startNextTask();
|
startNextTask();
|
||||||
|
@ -17,7 +17,10 @@
|
|||||||
package com.arialyy.simple.base;
|
package com.arialyy.simple.base;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.StrictMode;
|
||||||
import com.arialyy.frame.core.AbsFrame;
|
import com.arialyy.frame.core.AbsFrame;
|
||||||
|
import com.arialyy.simple.BuildConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Lyy on 2016/9/27.
|
* Created by Lyy on 2016/9/27.
|
||||||
@ -26,5 +29,11 @@ public class BaseApplication extends Application {
|
|||||||
@Override public void onCreate() {
|
@Override public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
AbsFrame.init(this);
|
AbsFrame.init(this);
|
||||||
|
|
||||||
|
if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
||||||
|
StrictMode.setThreadPolicy(
|
||||||
|
new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
|
||||||
|
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -62,7 +62,8 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
|||||||
private static final String DOWNLOAD_URL =
|
private static final String DOWNLOAD_URL =
|
||||||
//"http://kotlinlang.org/docs/kotlin-docs.pdf";
|
//"http://kotlinlang.org/docs/kotlin-docs.pdf";
|
||||||
//"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe";
|
//"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe";
|
||||||
"http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
|
//"http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
|
||||||
|
"http://down2.xiaoshuofuwuqi.com/d/file/filetxt/20170608/14/%BA%DA%CE%D7%CA%A6%E1%C8%C6%F0.txt";
|
||||||
//"http://tinghuaapp.oss-cn-shanghai.aliyuncs.com/20170612201739607815";
|
//"http://tinghuaapp.oss-cn-shanghai.aliyuncs.com/20170612201739607815";
|
||||||
//"http://static.gaoshouyou.com/d/36/69/2d3699acfa69e9632262442c46516ad8.apk";
|
//"http://static.gaoshouyou.com/d/36/69/2d3699acfa69e9632262442c46516ad8.apk";
|
||||||
//"http://oqcpqqvuf.bkt.clouddn.com/ceshi.txt";
|
//"http://oqcpqqvuf.bkt.clouddn.com/ceshi.txt";
|
||||||
|
Reference in New Issue
Block a user