diff --git a/.idea/misc.xml b/.idea/misc.xml
index fbb68289..5d199810 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
-
+
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 d4a8f86a..de033a65 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
@@ -33,9 +33,9 @@ import com.arialyy.aria.util.Configuration;
* 下载任务队列
*/
public class DownloadTaskQueue implements ITaskQueue {
- private static final String TAG = "DownloadTaskQueue";
- private CachePool mCachePool = CachePool.getInstance();
- private ExecutePool mExecutePool = ExecutePool.getInstance();
+ private static final String TAG = "DownloadTaskQueue";
+ private CachePool mCachePool = CachePool.getInstance();
+ private ExecutePool mExecutePool = ExecutePool.getInstance();
private Context mContext;
//private IDownloadSchedulers mSchedulers;
@@ -171,13 +171,10 @@ public class DownloadTaskQueue implements ITaskQueue {
Task task = mExecutePool.getTask(entity.getDownloadUrl());
if (task != null) {
Log.d(TAG, "从执行池删除任务,删除" + (mExecutePool.removeTask(task) ? "成功" : "失败"));
- } else {
- task = mCachePool.getTask(entity.getDownloadUrl());
}
+ task = mCachePool.getTask(entity.getDownloadUrl());
if (task != null) {
Log.d(TAG, "从缓存池删除任务,删除" + (mCachePool.removeTask(task) ? "成功" : "失败"));
- } else {
- Log.w(TAG, "没有找到下载链接为【" + entity.getDownloadUrl() + "】的任务");
}
}
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 22a7d283..25e9385c 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
@@ -121,15 +121,16 @@ public class DownloadSchedulers implements IDownloadSchedulers {
case STOP:
case CANCEL:
mQueue.removeTask(entity);
- mQueue.removeTask(entity);
- if (mQueue.size() != Configuration.getInstance().getDownloadNum()) {
+ if (mQueue.size() < Configuration.getInstance().getDownloadNum()) {
startNextTask(entity);
}
break;
case COMPLETE:
+ mQueue.removeTask(entity);
startNextTask(entity);
break;
case FAIL:
+ mQueue.removeTask(entity);
handleFailTask(entity);
break;
}
@@ -223,7 +224,6 @@ public class DownloadSchedulers implements IDownloadSchedulers {
* @param entity 通过Handler传递的下载实体
*/
@Override public void startNextTask(DownloadEntity entity) {
- mQueue.removeTask(entity);
Task newTask = mQueue.getNextTask();
if (newTask == null) {
Log.w(TAG, "没有下一任务");
diff --git a/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java b/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java
index b17da02e..af40e0de 100644
--- a/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java
+++ b/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java
@@ -1,3 +1,18 @@
+/*
+ * 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.util;
import android.text.TextUtils;
@@ -38,7 +53,7 @@ public class SSLContextUtil {
* @param caPath 保存在assets目录下的CA证书完整路径
*/
public static SSLContext getSSLContext(String caAlias, String caPath) {
- if (TextUtils.isEmpty(caAlias) || TextUtils.isEmpty(caPath)){
+ if (TextUtils.isEmpty(caAlias) || TextUtils.isEmpty(caPath)) {
return null;
}
// Load CAs from an InputStream
diff --git a/app/src/main/java/com/arialyy/simple/MainActivity.java b/app/src/main/java/com/arialyy/simple/MainActivity.java
index 33a10ee8..0df80bbc 100644
--- a/app/src/main/java/com/arialyy/simple/MainActivity.java
+++ b/app/src/main/java/com/arialyy/simple/MainActivity.java
@@ -33,6 +33,7 @@ import com.arialyy.simple.databinding.ActivityMainBinding;
import com.arialyy.simple.dialog_task.DownloadDialog;
import com.arialyy.simple.fragment_task.FragmentActivity;
import com.arialyy.simple.multi_task.MultiTaskActivity;
+import com.arialyy.simple.notification.SimpleNotification;
import com.arialyy.simple.pop_task.DownloadPopupWindow;
import com.arialyy.simple.single_task.SingleTaskActivity;
@@ -104,6 +105,10 @@ public class MainActivity extends BaseActivity {
case R.id.fragment_task:
startActivity(new Intent(this, FragmentActivity.class));
break;
+ case R.id.notification:
+ SimpleNotification notification = new SimpleNotification(this);
+ notification.start();
+ break;
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java b/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java
new file mode 100644
index 00000000..3d11fd69
--- /dev/null
+++ b/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java
@@ -0,0 +1,98 @@
+package com.arialyy.simple.notification;
+
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Environment;
+import android.support.v4.app.NotificationCompat;
+import com.arialyy.aria.core.Aria;
+import com.arialyy.aria.core.task.Task;
+import com.arialyy.frame.util.show.L;
+import com.arialyy.frame.util.show.T;
+import com.arialyy.simple.R;
+
+/**
+ * Created by Aria.Lao on 2017/1/18.
+ */
+
+public class SimpleNotification {
+ private static final String DOWNLOAD_URL =
+ "http://static.gaoshouyou.com/d/6e/e5/ff6ecaaf45e532e6d07747af82357472.apk";
+
+ private NotificationManager mManager;
+ private Context mContext;
+ private NotificationCompat.Builder mBuilder;
+ private static final int mNotifiyId = 0;
+
+ public SimpleNotification(Context context) {
+ mContext = context;
+ init();
+ }
+
+ private void init() {
+ mManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ mBuilder = new NotificationCompat.Builder(mContext);
+ mBuilder.setContentTitle("Aria Download Test")
+ .setContentText("进度条")
+ .setProgress(100, 0, false)
+ .setSmallIcon(R.mipmap.ic_launcher);
+ mManager.notify(mNotifiyId, mBuilder.build());
+ Aria.whit(mContext).addSchedulerListener(new DownloadCallback(mBuilder, mManager));
+ }
+
+ public void start() {
+ Aria.whit(mContext)
+ .load(DOWNLOAD_URL)
+ .setDownloadName("notification_test.apk")
+ .setDownloadPath(
+ Environment.getExternalStorageDirectory() + "/Download/notification_test.apk")
+ .start();
+ }
+
+ public void stop() {
+ Aria.whit(mContext).load(DOWNLOAD_URL).stop();
+ }
+
+ private static class DownloadCallback extends Aria.SimpleSchedulerListener {
+ NotificationCompat.Builder mBuilder;
+ NotificationManager mManager;
+
+ private DownloadCallback(NotificationCompat.Builder builder, NotificationManager manager) {
+ mBuilder = builder;
+ mManager = manager;
+ }
+
+ @Override public void onTaskStart(Task task) {
+ super.onTaskStart(task);
+ }
+
+ @Override public void onTaskPre(Task task) {
+ super.onTaskPre(task);
+ }
+
+ @Override public void onTaskStop(Task task) {
+ super.onTaskStop(task);
+ }
+
+ @Override public void onTaskRunning(Task task) {
+ super.onTaskRunning(task);
+ long len = task.getFileSize();
+ int p = (int) (task.getCurrentProgress() * 100 / len);
+ if (mBuilder != null) {
+ mBuilder.setProgress(100, p, false);
+ mManager.notify(mNotifiyId, mBuilder.build());
+ }
+ }
+
+ @Override public void onTaskComplete(Task task) {
+ super.onTaskComplete(task);
+ if (mBuilder != null) {
+ mBuilder.setProgress(100, 100, false);
+ mManager.notify(mNotifiyId, mBuilder.build());
+ }
+ }
+
+ @Override public void onTaskCancel(Task task) {
+ super.onTaskCancel(task);
+ }
+ }
+}
diff --git a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java
index 04639b8b..82d62924 100644
--- a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java
+++ b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java
@@ -89,7 +89,7 @@ public class SingleTaskActivity extends BaseActivity {
case DOWNLOAD_PRE:
mSize.setText(CommonUtil.formatFileSize((Long) msg.obj));
setBtState(false);
- mStart.setText("暂停");
+ //mStart.setText("暂停");
break;
case DOWNLOAD_FAILE:
Toast.makeText(SingleTaskActivity.this, "下载失败", Toast.LENGTH_SHORT).show();
@@ -119,11 +119,6 @@ public class SingleTaskActivity extends BaseActivity {
mStart.setText("重新开始?");
mCancel.setEnabled(false);
setBtState(true);
-
- //String path = Environment.getExternalStorageDirectory().getPath() + "/test.jpg";
- //Bitmap bm = BitmapFactory.decodeFile(path);
- //mImg.setImageBitmap(bm);
-
break;
}
}
@@ -201,8 +196,6 @@ public class SingleTaskActivity extends BaseActivity {
.load(DOWNLOAD_URL)
.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk")
.setDownloadName("test.apk")
- //.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.jpg")
- //.setDownloadName("test.jpg")
.start();
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 464bb3a5..08ccd012 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -56,5 +56,14 @@
style="?buttonBarButtonStyle"
/>
+
+