From 581b53cc81793397d60dff5e22b9bf963bee3569 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Fri, 7 Apr 2017 16:51:06 +0800 Subject: [PATCH 1/4] .. --- .../java/com/arialyy/aria/core/download/DownloadTarget.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java index e23acbe5..b8afcd17 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java @@ -48,8 +48,9 @@ public class DownloadTarget extends AbsTarget Date: Mon, 10 Apr 2017 13:42:47 +0800 Subject: [PATCH 2/4] bug fix --- .../aria/core/download/DownloadTarget.java | 7 ++++ .../com/arialyy/aria/core/inf/AbsTarget.java | 8 ++++ .../aria/core/queue/DownloadTaskQueue.java | 8 +++- .../arialyy/aria/core/queue/ITaskQueue.java | 8 ++++ .../aria/core/queue/UploadTaskQueue.java | 8 +++- .../aria/core/upload/UploadTarget.java | 7 ++++ .../java/com/arialyy/aria/orm/DbUtil.java | 38 ++++++++----------- 7 files changed, 58 insertions(+), 26 deletions(-) diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java index b8afcd17..0d18ce41 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java @@ -74,6 +74,13 @@ public class DownloadTarget extends AbsTarget return -1; } + /** + * 下载任务是否存在 + */ + public boolean taskExists(String downloadUrl) { + return false; + } + /** * 获取当前任务进度,如果任务存在,则返回当前进度 * diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java index 7288fde6..a40d92b5 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java @@ -160,9 +160,13 @@ public class DownloadTaskQueue } @Override public DownloadTask getTask(DownloadEntity entity) { - DownloadTask task = mExecutePool.getTask(entity.getDownloadUrl()); + return getTask(entity.getDownloadUrl()); + } + + @Override public DownloadTask getTask(String url) { + DownloadTask task = mExecutePool.getTask(url); if (task == null) { - task = mCachePool.getTask(entity.getDownloadUrl()); + task = mCachePool.getTask(url); } return task; } diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/ITaskQueue.java b/Aria/src/main/java/com/arialyy/aria/core/queue/ITaskQueue.java index 0b9b18af..7f05cbff 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/ITaskQueue.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/ITaskQueue.java @@ -89,6 +89,14 @@ public interface ITaskQueue { return this; } + /** + * 下载任务是否存在 + */ + @Override public boolean taskExists(String downloadUrl) { + return UploadTaskQueue.getInstance().getTask(downloadUrl) != null; + } + /** * 设置请求类型 * diff --git a/Aria/src/main/java/com/arialyy/aria/orm/DbUtil.java b/Aria/src/main/java/com/arialyy/aria/orm/DbUtil.java index 0e14dea1..79a94c20 100644 --- a/Aria/src/main/java/com/arialyy/aria/orm/DbUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/orm/DbUtil.java @@ -21,13 +21,9 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.annotation.NonNull; -import android.text.TextUtils; import android.util.Log; import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CommonUtil; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -73,7 +69,7 @@ public class DbUtil { */ synchronized void delData(Class clazz, String... expression) { CheckUtil.checkSqlExpression(expression); - mDb = mHelper.getWritableDatabase(); + checkDb(); SqlHelper.delData(mDb, clazz, expression); } @@ -81,7 +77,7 @@ public class DbUtil { * 修改某行数据 */ synchronized void modifyData(DbEntity dbEntity) { - mDb = mHelper.getWritableDatabase(); + checkDb(); SqlHelper.modifyData(mDb, dbEntity); } @@ -89,9 +85,7 @@ public class DbUtil { * 遍历所有数据 */ synchronized List findAllData(Class clazz) { - if (mDb == null || !mDb.isOpen()) { - mDb = mHelper.getReadableDatabase(); - } + checkDb(); return SqlHelper.findAllData(mDb, clazz); } @@ -99,7 +93,7 @@ public class DbUtil { * 条件查寻数据 */ synchronized List findData(Class clazz, String... expression) { - mDb = mHelper.getReadableDatabase(); + checkDb(); return SqlHelper.findData(mDb, clazz, expression); } @@ -108,7 +102,7 @@ public class DbUtil { */ @Deprecated synchronized List findData(Class clazz, @NonNull String[] wheres, @NonNull String[] values) { - mDb = mHelper.getReadableDatabase(); + checkDb(); return SqlHelper.findData(mDb, clazz, wheres, values); } @@ -116,9 +110,7 @@ public class DbUtil { * 插入数据 */ synchronized void insertData(DbEntity dbEntity) { - if (mDb == null || !mDb.isOpen()) { - mDb = mHelper.getReadableDatabase(); - } + checkDb(); SqlHelper.insertData(mDb, dbEntity); } @@ -126,19 +118,21 @@ public class DbUtil { * 查找某张表是否存在 */ synchronized boolean tableExists(Class clazz) { - if (mDb == null || !mDb.isOpen()) { - mDb = mHelper.getReadableDatabase(); - } + checkDb(); return SqlHelper.tableExists(mDb, clazz); } synchronized void createTable(Class clazz, String tableName) { - if (mDb == null || !mDb.isOpen()) { - mDb = mHelper.getWritableDatabase(); - } + checkDb(); SqlHelper.createTable(mDb, clazz, tableName); } + private void checkDb(){ + if (mDb == null || !mDb.isOpen()) { + mDb = mHelper.getReadableDatabase(); + } + } + /** * 创建表 */ @@ -159,7 +153,7 @@ public class DbUtil { * 获取所在行Id */ synchronized int[] getRowId(Class clazz) { - mDb = mHelper.getReadableDatabase(); + checkDb(); Cursor cursor = mDb.rawQuery("SELECT rowid, * FROM " + CommonUtil.getClassName(clazz), null); int[] ids = new int[cursor.getCount()]; int i = 0; @@ -176,7 +170,7 @@ public class DbUtil { * 获取行Id */ synchronized int getRowId(Class clazz, Object[] wheres, Object[] values) { - mDb = mHelper.getReadableDatabase(); + checkDb(); if (wheres.length <= 0 || values.length <= 0) { Log.e(TAG, "请输入删除条件"); return -1; From 9882455cef1fcc5d0f1229b71148b701c570eae8 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Thu, 20 Apr 2017 15:26:50 +0800 Subject: [PATCH 3/4] =?UTF-8?q?cinfig=E5=87=86=E5=A4=87=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/arialyy/aria/core/AriaManager.java | 16 ++-- .../com/arialyy/aria/core/Configuration.java | 78 +++++++++++++++++++ .../aria/core/download/ConnectionHelp.java | 2 +- .../aria/core/download/DownloadTask.java | 5 +- .../aria/core/download/SingleThreadTask.java | 3 +- .../aria/core/queue/DownloadTaskQueue.java | 4 +- .../aria/core/queue/pool/ExecutePool.java | 6 +- .../core/scheduler/DownloadSchedulers.java | 6 +- .../aria/core/scheduler/UploadSchedulers.java | 6 +- .../arialyy/aria/core/upload/UploadTask.java | 4 +- ...onfiguration.java => Configuration_1.java} | 12 +-- app/src/main/assets/aria_config.xml | 46 +++++++++++ 12 files changed, 154 insertions(+), 34 deletions(-) create mode 100644 Aria/src/main/java/com/arialyy/aria/core/Configuration.java rename Aria/src/main/java/com/arialyy/aria/util/{Configuration.java => Configuration_1.java} (95%) create mode 100644 app/src/main/assets/aria_config.xml diff --git a/Aria/src/main/java/com/arialyy/aria/core/AriaManager.java b/Aria/src/main/java/com/arialyy/aria/core/AriaManager.java index c896c415..98cf7a27 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/AriaManager.java +++ b/Aria/src/main/java/com/arialyy/aria/core/AriaManager.java @@ -28,17 +28,14 @@ import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.Log; import android.widget.PopupWindow; -import com.arialyy.aria.core.download.DownloadEntity; import com.arialyy.aria.core.download.DownloadReceiver; import com.arialyy.aria.core.inf.ICmd; import com.arialyy.aria.core.inf.IReceiver; import com.arialyy.aria.core.queue.DownloadTaskQueue; -import com.arialyy.aria.core.queue.UploadTaskQueue; import com.arialyy.aria.core.upload.UploadReceiver; -import com.arialyy.aria.orm.DbEntity; import com.arialyy.aria.orm.DbUtil; import com.arialyy.aria.util.CAConfiguration; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import com.arialyy.aria.util.Speed; import java.util.ArrayList; import java.util.HashMap; @@ -60,6 +57,7 @@ import java.util.Map; private Map mReceivers = new HashMap<>(); public static Context APP; private List mCommands = new ArrayList<>(); + private Configuration mConfig; private AriaManager(Context context) { DbUtil.init(context.getApplicationContext()); @@ -84,7 +82,7 @@ import java.util.Map; * 设置最大下载速度 */ public void setMaxSpeed(Speed speed) { - Configuration.getInstance().setMaxSpeed(speed); + Configuration_1.getInstance().setMaxSpeed(speed); } /** @@ -159,7 +157,7 @@ import java.util.Map; * 设置下载超时时间 */ @Deprecated private AriaManager setTimeOut(int timeOut) { - Configuration.getInstance().setTimeOut(timeOut); + Configuration_1.getInstance().setTimeOut(timeOut); return this; } @@ -167,7 +165,7 @@ import java.util.Map; * 设置失败重试次数 */ public AriaManager setReTryNum(int reTryNum) { - Configuration.getInstance().setReTryNum(reTryNum); + Configuration_1.getInstance().setReTryNum(reTryNum); return this; } @@ -175,7 +173,7 @@ import java.util.Map; * 设置失败重试间隔 */ public AriaManager setReTryInterval(int interval) { - Configuration.getInstance().setReTryInterval(interval); + Configuration_1.getInstance().setReTryInterval(interval); return this; } @@ -183,7 +181,7 @@ import java.util.Map; * 是否打开下载广播 */ public AriaManager openBroadcast(boolean open) { - Configuration.getInstance().setOpenBroadcast(open); + Configuration_1.getInstance().setOpenBroadcast(open); return this; } diff --git a/Aria/src/main/java/com/arialyy/aria/core/Configuration.java b/Aria/src/main/java/com/arialyy/aria/core/Configuration.java new file mode 100644 index 00000000..1c11d5f6 --- /dev/null +++ b/Aria/src/main/java/com/arialyy/aria/core/Configuration.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.arialyy.aria.core; + +/** + * Created by AriaL on 2016/12/8. + * 信息配置 + */ +class Configuration { + private static final String TAG = "Configuration"; + private static final String CONFIG_FILE = "/Aria/ADConfig.properties"; + private static final String CONFIG_KEY = "ARIA_CONFIG"; + + /** + * 通用配置 + */ + static class BaseConfig { + public boolean isOpenBreadCast = false; + /** + * 任务队列最大任务数, 默认为2 + */ + public int maxQueueNum = 2; + /** + * 下载失败,重试次数,默认为10 + */ + public int reTryNum = 10; + /** + * 设置重试间隔,单位为毫秒,默认2000毫秒 + */ + public long reTryInterval = 2000; + /** + * 设置url连接超时时间,单位为毫秒,默认5000毫秒 + */ + public long connectTimeOut = 5000; + } + + /** + * 下载配置 + */ + public static class DownloadConfig extends BaseConfig { + /** + * 设置IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒 + */ + public long readTimeout = 20 * 1000; + /** + * 设置写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢 + */ + public int buffSize = 8192; + /** + * 设置https ca 证书信息;path 为assets目录下的CA证书完整路径 + */ + public String caPath; + /** + * name 为CA证书名 + */ + public String caName; + } + + /** + * 上传配置 + */ + public static class UploadConfig extends BaseConfig { + + } +} diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/ConnectionHelp.java b/Aria/src/main/java/com/arialyy/aria/core/download/ConnectionHelp.java index 0476ce8f..ca2cb6b5 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/ConnectionHelp.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/ConnectionHelp.java @@ -43,7 +43,7 @@ class ConnectionHelp { if (urlConn instanceof HttpsURLConnection) { conn = (HttpsURLConnection) urlConn; SSLContext sslContext = - SSLContextUtil.getSSLContext(CAConfiguration.CA_ALIAS, CAConfiguration.CA_ALIAS); + SSLContextUtil.getSSLContext(CAConfiguration.CA_ALIAS, CAConfiguration.CA_PATH); if (sslContext == null) { sslContext = SSLContextUtil.getDefaultSLLContext(); } diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java index 27ffcc0b..2e3dc888 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java @@ -22,13 +22,12 @@ import android.os.Handler; import android.util.Log; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.AriaManager; -import com.arialyy.aria.core.inf.IEntity; import com.arialyy.aria.core.inf.ITask; import com.arialyy.aria.core.scheduler.DownloadSchedulers; import com.arialyy.aria.core.scheduler.ISchedulers; import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CommonUtil; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import java.lang.ref.WeakReference; /** @@ -349,7 +348,7 @@ public class DownloadTask implements ITask { downloadEntity.setDownloadComplete(action.equals(Aria.ACTION_COMPLETE)); downloadEntity.setCurrentProgress(location); downloadEntity.update(); - if (!Configuration.isOpenBreadCast) return; + if (!Configuration_1.isOpenBreadCast) return; Intent intent = CommonUtil.createIntent(context.getPackageName(), action); intent.putExtra(Aria.ENTITY, downloadEntity); if (location != -1) { diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/SingleThreadTask.java b/Aria/src/main/java/com/arialyy/aria/core/download/SingleThreadTask.java index ee298579..bedf86c1 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/SingleThreadTask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/SingleThreadTask.java @@ -21,7 +21,6 @@ import android.os.Message; import android.util.Log; import com.arialyy.aria.util.BufferedRandomAccessFile; import com.arialyy.aria.util.CommonUtil; -import com.arialyy.aria.util.Configuration; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -55,7 +54,7 @@ final class SingleThreadTask implements Runnable { if (mConfigEntity.isSupportBreakpoint) { mConfigFPath = downloadInfo.CONFIG_FILE_PATH; } - //mBufSize = Configuration.getInstance().getMaxSpeed(); + //mBufSize = Configuration_1.getInstance().getMaxSpeed(); } @Override public void run() { diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java index a40d92b5..7bb7eba8 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java @@ -25,7 +25,7 @@ import com.arialyy.aria.core.inf.IEntity; import com.arialyy.aria.core.queue.pool.CachePool; import com.arialyy.aria.core.queue.pool.ExecutePool; import com.arialyy.aria.core.scheduler.DownloadSchedulers; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; /** * Created by lyy on 2016/8/17. @@ -121,7 +121,7 @@ public class DownloadTaskQueue @Override public void setDownloadNum(int downloadNum) { //原始长度 - int size = Configuration.getInstance().getDownloadNum(); + int size = Configuration_1.getInstance().getDownloadNum(); int diff = downloadNum - size; if (size == downloadNum) { Log.d(TAG, "设置的下载任务数和配置文件的下载任务数一直,跳过"); diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/pool/ExecutePool.java b/Aria/src/main/java/com/arialyy/aria/core/queue/pool/ExecutePool.java index 450018f6..29d23972 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/pool/ExecutePool.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/pool/ExecutePool.java @@ -20,7 +20,7 @@ import android.text.TextUtils; import android.util.Log; import com.arialyy.aria.core.inf.ITask; import com.arialyy.aria.util.CommonUtil; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ArrayBlockingQueue; @@ -39,7 +39,7 @@ public class ExecutePool implements IPool { private int mSize; public ExecutePool() { - mSize = Configuration.getInstance().getDownloadNum(); + mSize = Configuration_1.getInstance().getDownloadNum(); mExecuteQueue = new ArrayBlockingQueue<>(mSize); mExecuteArray = new HashMap<>(); } @@ -81,7 +81,7 @@ public class ExecutePool implements IPool { } mExecuteQueue = temp; mSize = downloadNum; - Configuration.getInstance().setDownloadNum(mSize); + Configuration_1.getInstance().setDownloadNum(mSize); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java index 2ef63d82..21bb1189 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java +++ b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java @@ -22,7 +22,7 @@ import android.util.Log; import com.arialyy.aria.core.queue.DownloadTaskQueue; import com.arialyy.aria.core.download.DownloadEntity; import com.arialyy.aria.core.download.DownloadTask; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -86,7 +86,7 @@ public class DownloadSchedulers implements ISchedulers { case STOP: case CANCEL: mQueue.removeTask(entity); - if (mQueue.size() < Configuration.getInstance().getDownloadNum()) { + if (mQueue.size() < Configuration_1.getInstance().getDownloadNum()) { startNextTask(); } break; @@ -163,7 +163,7 @@ public class DownloadSchedulers implements ISchedulers { * @param task 下载任务 */ private void handleFailTask(final DownloadTask task) { - final Configuration config = Configuration.getInstance(); + final Configuration_1 config = Configuration_1.getInstance(); CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) { @Override public void onTick(long millisUntilFinished) { diff --git a/Aria/src/main/java/com/arialyy/aria/core/scheduler/UploadSchedulers.java b/Aria/src/main/java/com/arialyy/aria/core/scheduler/UploadSchedulers.java index b5108f6b..8c2777d2 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/scheduler/UploadSchedulers.java +++ b/Aria/src/main/java/com/arialyy/aria/core/scheduler/UploadSchedulers.java @@ -22,7 +22,7 @@ import com.arialyy.aria.core.inf.IEntity; import com.arialyy.aria.core.queue.UploadTaskQueue; import com.arialyy.aria.core.upload.UploadEntity; import com.arialyy.aria.core.upload.UploadTask; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -69,7 +69,7 @@ public class UploadSchedulers implements ISchedulers { } private void handleFailTask(final UploadTask task) { - final Configuration config = Configuration.getInstance(); + final Configuration_1 config = Configuration_1.getInstance(); CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) { @Override public void onTick(long millisUntilFinished) { @@ -169,7 +169,7 @@ public class UploadSchedulers implements ISchedulers { case STOP: case CANCEL: mQueue.removeTask(entity); - if (mQueue.size() < Configuration.getInstance().getDownloadNum()) { + if (mQueue.size() < Configuration_1.getInstance().getDownloadNum()) { startNextTask(); } break; diff --git a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java index d35109b8..5aeba039 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java @@ -26,7 +26,7 @@ import com.arialyy.aria.core.inf.ITask; import com.arialyy.aria.core.scheduler.DownloadSchedulers; import com.arialyy.aria.core.scheduler.ISchedulers; import com.arialyy.aria.util.CommonUtil; -import com.arialyy.aria.util.Configuration; +import com.arialyy.aria.util.Configuration_1; import java.lang.ref.WeakReference; /** @@ -220,7 +220,7 @@ public class UploadTask implements ITask { entity.setComplete(action.equals(Aria.ACTION_COMPLETE)); entity.setCurrentProgress(location); entity.update(); - if (!Configuration.isOpenBreadCast) return; + if (!Configuration_1.isOpenBreadCast) return; Intent intent = CommonUtil.createIntent(AriaManager.APP.getPackageName(), action); intent.putExtra(Aria.ENTITY, entity); if (location != -1) { diff --git a/Aria/src/main/java/com/arialyy/aria/util/Configuration.java b/Aria/src/main/java/com/arialyy/aria/util/Configuration_1.java similarity index 95% rename from Aria/src/main/java/com/arialyy/aria/util/Configuration.java rename to Aria/src/main/java/com/arialyy/aria/util/Configuration_1.java index 05081d1f..d89ffed4 100644 --- a/Aria/src/main/java/com/arialyy/aria/util/Configuration.java +++ b/Aria/src/main/java/com/arialyy/aria/util/Configuration_1.java @@ -28,8 +28,8 @@ import java.util.WeakHashMap; * Created by AriaL on 2016/12/8. * 信息配置 */ -public class Configuration { - private static final String TAG = "Configuration"; +public class Configuration_1 { + private static final String TAG = "Configuration_1"; private static final String CONFIG_FILE = "/Aria/ADConfig.properties"; /** * 当前调度器最大下载数,默认最大下载数为 “2” @@ -58,20 +58,20 @@ public class Configuration { public static boolean isOpenBreadCast = false; - private static Configuration INSTANCE = null; + private static Configuration_1 INSTANCE = null; private File mConfigFile = null; private static final Object LOCK = new Object(); - public static Configuration getInstance() { + public static Configuration_1 getInstance() { if (INSTANCE == null) { synchronized (LOCK) { - INSTANCE = new Configuration(); + INSTANCE = new Configuration_1(); } } return INSTANCE; } - private Configuration() { + private Configuration_1() { mConfigFile = new File(AriaManager.APP.getFilesDir().getPath() + CONFIG_FILE); try { if (!mConfigFile.exists()) { diff --git a/app/src/main/assets/aria_config.xml b/app/src/main/assets/aria_config.xml new file mode 100644 index 00000000..a87a1297 --- /dev/null +++ b/app/src/main/assets/aria_config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 9a6e60f67f18936e8ed4f5a5bd35e130d69dca19 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Tue, 16 May 2017 11:06:29 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E5=90=8E=E5=88=A0=E9=99=A4=E4=BB=BB=E5=8A=A1=E9=97=AA=E9=80=80?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aria/build.gradle | 4 +-- .../com/arialyy/aria/core/command/AbsCmd.java | 7 ++++- .../com/arialyy/aria/core/command/AddCmd.java | 17 +---------- .../arialyy/aria/core/command/CancelCmd.java | 22 +------------- .../arialyy/aria/core/command/StartCmd.java | 19 +----------- .../arialyy/aria/core/command/StopCmd.java | 26 +---------------- .../aria/core/download/DownloadTask.java | 28 ++++++++++++++---- .../aria/core/download/DownloadUtil.java | 3 +- .../com/arialyy/aria/core/inf/AbsTarget.java | 11 +++++++ .../java/com/arialyy/aria/core/inf/ITask.java | 2 ++ .../arialyy/aria/core/upload/UploadTask.java | 24 +++++++++++++-- .../arialyy/aria/core/upload/UploadUtil.java | 2 +- .../java/com/arialyy/aria/util/CheckUtil.java | 29 ++++++++++++------- README.md | 3 +- .../simple/download/SingleTaskActivity.java | 10 ++++--- 15 files changed, 99 insertions(+), 108 deletions(-) diff --git a/Aria/build.gradle b/Aria/build.gradle index 81393a41..9eeea133 100644 --- a/Aria/build.gradle +++ b/Aria/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 9 targetSdkVersion 23 - versionCode 101 - versionName "3.0.2" + versionCode 102 + versionName "3.0.3" } buildTypes { release { diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/AbsCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/AbsCmd.java index 452b0a34..79f9b104 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/AbsCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/AbsCmd.java @@ -35,12 +35,17 @@ public abstract class AbsCmd implements ICmd { T mEntity; String TAG; String mTargetName; + /** + * 能否执行命令 + */ + boolean cancelExe = true; /** * @param targetName 产生任务的对象名 */ AbsCmd(String targetName, T entity) { - CheckUtil.checkCmdEntity(entity); + cancelExe = CheckUtil.checkCmdEntity(entity, + !(this instanceof CancelCmd) || !(this instanceof StopCmd)); mTargetName = targetName; mEntity = entity; TAG = CommonUtil.getClassName(this); diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/AddCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/AddCmd.java index 06c12003..6db19781 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/AddCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/AddCmd.java @@ -31,6 +31,7 @@ class AddCmd extends AbsCmd { } @Override public void executeCmd() { + if (!cancelExe) return; ITask task = mQueue.getTask(mEntity.getEntity()); if (task == null) { mQueue.createTask(mTargetName, mEntity); @@ -39,20 +40,4 @@ class AddCmd extends AbsCmd { } } - //AddCmd(DownloadTaskEntity entity) { - // super(entity); - //} - // - //AddCmd(String targetName, DownloadTaskEntity entity) { - // super(targetName, entity); - //} - // - //@Override public void executeCmd() { - // DownloadTask task = mQueue.getTask(mEntity.downloadEntity); - // if (task == null) { - // mQueue.createTask(mTargetName, mEntity); - // } else { - // Log.w(TAG, "添加命令执行失败,【该任务已经存在】"); - // } - //} } \ No newline at end of file diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/CancelCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/CancelCmd.java index 7024143a..92ea7b42 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/CancelCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/CancelCmd.java @@ -29,6 +29,7 @@ class CancelCmd extends AbsCmd { } @Override public void executeCmd() { + if (!cancelExe) return; ITask task = mQueue.getTask(mEntity.getEntity()); if (task == null) { task = mQueue.createTask(mTargetName, mEntity); @@ -40,25 +41,4 @@ class CancelCmd extends AbsCmd { mQueue.cancelTask(task); } } - - //CancelCmd(DownloadTaskEntity entity) { - // super(entity); - //} - // - //CancelCmd(String targetName, DownloadTaskEntity entity) { - // super(targetName, entity); - //} - // - //@Override public void executeCmd() { - // DownloadTask task = mQueue.getTask(mEntity.downloadEntity); - // if (task == null) { - // task = mQueue.createTask(mTargetName, mEntity); - // } - // if (task != null) { - // if (mTargetName != null) { - // task.setTargetName(mTargetName); - // } - // mQueue.cancelTask(task); - // } - //} } \ No newline at end of file diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java index bec05307..f6598e03 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java @@ -31,6 +31,7 @@ class StartCmd extends AbsCmd { } @Override public void executeCmd() { + if (!cancelExe) return; ITask task = mQueue.getTask(mEntity.getEntity()); if (task == null) { task = mQueue.createTask(mTargetName, mEntity); @@ -41,22 +42,4 @@ class StartCmd extends AbsCmd { } } - //StartCmd(DownloadTaskEntity entity) { - // super(entity); - //} - // - //StartCmd(String targetName, DownloadTaskEntity entity) { - // super(targetName, entity); - //} - // - //@Override public void executeCmd() { - // DownloadTask task = mQueue.getTask(mEntity.downloadEntity); - // if (task == null) { - // task = mQueue.createTask(mTargetName, mEntity); - // } - // if (task != null) { - // task.setTargetName(mTargetName); - // mQueue.startTask(task); - // } - //} } \ No newline at end of file diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/StopCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/StopCmd.java index 3d617b32..9594381e 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/StopCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/StopCmd.java @@ -33,6 +33,7 @@ class StopCmd extends AbsCmd { } @Override public void executeCmd() { + if (!cancelExe) return; ITask task = mQueue.getTask(mEntity.getEntity()); if (task == null) { if (mEntity.getEntity().getState() == IEntity.STATE_RUNNING) { @@ -48,29 +49,4 @@ class StopCmd extends AbsCmd { mQueue.stopTask(task); } } - - //StopCmd(DownloadTaskEntity entity) { - // super(entity); - //} - // - //StopCmd(String targetName, DownloadTaskEntity entity) { - // super(targetName, entity); - //} - // - //@Override public void executeCmd() { - // DownloadTask task = mQueue.getTask(mEntity.downloadEntity); - // if (task == null) { - // if (mEntity.downloadEntity.getState() == DownloadEntity.STATE_RUNNING) { - // task = mQueue.createTask(mTargetName, mEntity); - // mQueue.stopTask(task); - // } else { - // Log.w(TAG, "停止命令执行失败,【调度器中没有该任务】"); - // } - // } else { - // if (!TextUtils.isEmpty(mTargetName)) { - // task.setTargetName(mTargetName); - // } - // mQueue.stopTask(task); - // } - //} } \ No newline at end of file diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java index 2e3dc888..6be7b99e 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java @@ -137,6 +137,10 @@ public class DownloadTask implements ITask { this.mTargetName = targetName; } + @Override public void removeRecord() { + mEntity.deleteData(); + } + /** * 停止下载 */ @@ -161,10 +165,7 @@ public class DownloadTask implements ITask { * 取消下载 */ @Override public void cancel() { - if (mUtil.isDownloading()) { - mUtil.cancelDownload(); - } else { - // 如果任务不是下载状态 + if (!mEntity.isDownloadComplete()) { mUtil.cancelDownload(); mUtil.delConfigFile(); mUtil.delTempFile(); @@ -177,6 +178,22 @@ public class DownloadTask implements ITask { intent.putExtra(Aria.ENTITY, mEntity); mContext.sendBroadcast(intent); } + //if (mEntity.isDownloadComplete()) { + // //mUtil.cancelDownload(); + //} else { + // // 如果任务不是下载状态 + // mUtil.cancelDownload(); + // mUtil.delConfigFile(); + // mUtil.delTempFile(); + // mEntity.deleteData(); + // if (mOutHandler != null) { + // mOutHandler.obtainMessage(DownloadSchedulers.CANCEL, this).sendToTarget(); + // } + // //发送取消下载的广播 + // Intent intent = CommonUtil.createIntent(mContext.getPackageName(), Aria.ACTION_CANCEL); + // intent.putExtra(Aria.ENTITY, mEntity); + // mContext.sendBroadcast(intent); + //} } public static class Builder { @@ -186,7 +203,8 @@ public class DownloadTask implements ITask { String targetName; public Builder(String targetName, DownloadTaskEntity taskEntity) { - CheckUtil.checkDownloadTaskEntity(taskEntity.downloadEntity); + //CheckUtil.checkDownloadTaskEntity(taskEntity.downloadEntity); + CheckUtil.checkTaskEntity(taskEntity); this.targetName = targetName; this.taskEntity = taskEntity; } diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadUtil.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadUtil.java index 9566f66f..4d87e055 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadUtil.java @@ -65,7 +65,8 @@ public class DownloadUtil implements IDownloadUtil, Runnable { DownloadUtil(Context context, DownloadTaskEntity entity, IDownloadListener downloadListener, int threadNum) { - CheckUtil.checkDownloadTaskEntity(entity.downloadEntity); + //CheckUtil.checkDownloadTaskEntity(entity.downloadEntity); + CheckUtil.checkTaskEntity(entity); mDownloadEntity = entity.downloadEntity; mContext = context.getApplicationContext(); mDownloadTaskEntity = entity; diff --git a/Aria/src/main/java/com/arialyy/aria/core/inf/AbsTarget.java b/Aria/src/main/java/com/arialyy/aria/core/inf/AbsTarget.java index f73e8f85..02feaab0 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/inf/AbsTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/inf/AbsTarget.java @@ -51,6 +51,17 @@ public class AbsTarget taskEntity.redirectUrlKey = redirectUrlKey; } + /** + * 删除记录 + */ + public void removeRecord() { + if (entity instanceof DownloadEntity) { + ((DownloadEntity) entity).deleteData(); + } else if (entity instanceof UploadEntity) { + ((UploadEntity) entity).deleteData(); + } + } + /** * 获取任务文件大小 * diff --git a/Aria/src/main/java/com/arialyy/aria/core/inf/ITask.java b/Aria/src/main/java/com/arialyy/aria/core/inf/ITask.java index 9e464224..e9b75864 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/inf/ITask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/inf/ITask.java @@ -51,4 +51,6 @@ public interface ITask { public long getCurrentProgress(); public void setTargetName(String targetName); + + public void removeRecord(); } diff --git a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java index 5aeba039..9ae43bcb 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java +++ b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java @@ -55,6 +55,10 @@ public class UploadTask implements ITask { mTargetName = targetName; } + @Override public void removeRecord() { + mUploadEntity.deleteData(); + } + @Override public String getKey() { return mUploadEntity.getFilePath(); } @@ -87,9 +91,8 @@ public class UploadTask implements ITask { } @Override public void cancel() { - if (mUtil.isRunning()) { - mUtil.cancel(); - } else { + + if (!mUploadEntity.isComplete()) { // 如果任务不是下载状态 mUtil.cancel(); mUploadEntity.deleteData(); @@ -101,6 +104,21 @@ public class UploadTask implements ITask { intent.putExtra(Aria.ENTITY, mUploadEntity); AriaManager.APP.sendBroadcast(intent); } + + //if (mUtil.isRunning()) { + // mUtil.cancel(); + //} else { + // // 如果任务不是下载状态 + // mUtil.cancel(); + // mUploadEntity.deleteData(); + // if (mOutHandler != null) { + // mOutHandler.obtainMessage(DownloadSchedulers.CANCEL, this).sendToTarget(); + // } + // //发送取消下载的广播 + // Intent intent = CommonUtil.createIntent(AriaManager.APP.getPackageName(), Aria.ACTION_CANCEL); + // intent.putExtra(Aria.ENTITY, mUploadEntity); + // AriaManager.APP.sendBroadcast(intent); + //} } public String getTargetName() { diff --git a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java index 1b05b200..5126660d 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java @@ -50,7 +50,7 @@ final class UploadUtil implements Runnable { UploadUtil(UploadTaskEntity taskEntity, IUploadListener listener) { mTaskEntity = taskEntity; - CheckUtil.checkUploadTaskEntity(taskEntity.uploadEntity); + CheckUtil.checkTaskEntity(taskEntity); mUploadEntity = taskEntity.uploadEntity; if (listener == null) { throw new IllegalArgumentException("上传监听不能为空"); diff --git a/Aria/src/main/java/com/arialyy/aria/util/CheckUtil.java b/Aria/src/main/java/com/arialyy/aria/util/CheckUtil.java index 2ac140af..ec382c7b 100644 --- a/Aria/src/main/java/com/arialyy/aria/util/CheckUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/util/CheckUtil.java @@ -17,6 +17,7 @@ package com.arialyy.aria.util; import android.text.TextUtils; +import android.util.Log; import com.arialyy.aria.core.download.DownloadEntity; import com.arialyy.aria.core.download.DownloadTaskEntity; import com.arialyy.aria.core.inf.ITaskEntity; @@ -95,31 +96,39 @@ public class CheckUtil { /** * 检查命令实体 + * + * @param checkPath 删除命令不需要检查下载路径和文件名 */ - public static void checkCmdEntity(ITaskEntity entity) { + public static boolean checkCmdEntity(ITaskEntity entity, boolean checkPath) { + boolean b = false; if (entity instanceof DownloadTaskEntity) { DownloadEntity entity1 = ((DownloadTaskEntity) entity).downloadEntity; if (entity1 == null) { - throw new NullPointerException("下载实体不能为空"); - } else if (TextUtils.isEmpty(entity1.getDownloadUrl())) { - throw new IllegalArgumentException("下载链接不能为空"); - } else if (TextUtils.isEmpty(entity1.getDownloadPath())) { - throw new IllegalArgumentException("保存路径不能为空"); + Log.e(TAG, "下载实体不能为空"); + } else if (checkPath && TextUtils.isEmpty(entity1.getDownloadUrl())) { + Log.e(TAG, "下载链接不能为空"); + } else if (checkPath && TextUtils.isEmpty(entity1.getDownloadPath())) { + Log.e(TAG, "保存路径不能为空"); + } else { + b = true; } } else if (entity instanceof UploadTaskEntity) { UploadEntity entity1 = ((UploadTaskEntity) entity).uploadEntity; if (entity1 == null) { - throw new NullPointerException("上传实体不能为空"); + Log.e(TAG, "上传实体不能为空"); } else if (TextUtils.isEmpty(entity1.getFilePath())) { - throw new IllegalArgumentException("上传文件路径不能为空"); + Log.e(TAG, "上传文件路径不能为空"); + } else { + b = true; } } + return b; } /** * 检查上传实体是否合法 */ - public static void checkUploadTaskEntity(UploadEntity entity) { + private static void checkUploadTaskEntity(UploadEntity entity) { if (entity == null) { throw new NullPointerException("上传实体不能为空"); } else if (TextUtils.isEmpty(entity.getFilePath())) { @@ -135,7 +144,7 @@ public class CheckUtil { * * @param entity 下载实体 */ - public static void checkDownloadTaskEntity(DownloadEntity entity) { + private static void checkDownloadTaskEntity(DownloadEntity entity) { if (entity == null) { throw new NullPointerException("下载实体不能为空"); } else if (TextUtils.isEmpty(entity.getDownloadUrl())) { diff --git a/README.md b/README.md index a41ebaab..3b2b43a2 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Aria怎样使用? ## 下载 [![Download](https://api.bintray.com/packages/arialyy/maven/Aria/images/download.svg)](https://bintray.com/arialyy/maven/Aria/_latestVersion)
```java -compile 'com.arialyy.aria:Aria:3.0.2' +compile 'com.arialyy.aria:Aria:3.0.3' ``` ## 示例 @@ -143,6 +143,7 @@ compile 'com.arialyy.aria:Aria:3.0.2' *** ## 开发日志 + + v_3.0.3 修复暂停后删除任务,闪退问题,添加删除记录的api + v_3.0.2 支持30x重定向链接下载 + v_3.0.0 添加上传任务支持,修复一些已发现的bug + v_2.4.4 修复不支持断点的下载链接拿不到文件大小的问题 diff --git a/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java b/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java index a1228987..42319695 100644 --- a/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java +++ b/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java @@ -55,10 +55,11 @@ public class SingleTaskActivity extends BaseActivity { private static final String DOWNLOAD_URL = //"http://kotlinlang.org/docs/kotlin-docs.pdf"; //"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe"; - //"http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; - //不支持断点的链接 - //"http://ox.konsung.net:5555/ksdc-web/download/downloadFile/?fileName=ksdc_1.0.2.apk&rRange=0-"; - "http://172.18.104.50:8080/download/_302turn"; + "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; + //"http://static.gaoshouyou.com/d/36/69/2d3699acfa69e9632262442c46516ad8.apk"; + //不支持断点的链接 + //"http://ox.konsung.net:5555/ksdc-web/download/downloadFile/?fileName=ksdc_1.0.2.apk&rRange=0-"; + //"http://172.18.104.50:8080/download/_302turn"; @Bind(R.id.progressBar) HorizontalProgressBarWithNumber mPb; @Bind(R.id.start) Button mStart; @Bind(R.id.stop) Button mStop; @@ -233,6 +234,7 @@ public class SingleTaskActivity extends BaseActivity { private void stop() { Aria.download(this).load(DOWNLOAD_URL).pause(); + //Aria.download(this).load(DOWNLOAD_URL).removeRecord(); } private void cancel() {